Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: модерация комментариев
 
 автор: usa   (13.12.2011 в 19:31)   письмо автору
 
 

добрый день!

Нашел скрипт коментариев. Нужно добавить возможность модерации сообщений и поставить проверку от спама.

<h1>Оставить свой комментарий:</h1> 
<div id='cerror'></div> 
<div align="center"><form action="#" method="POST" enctype="multipart/form-data" name="addcom" id="addcom" onSubmit="return false"> 
Ваше имя:<br> 
<input name="author" type="text" size="30" class="pole" id="author"><br><br> 
Текст комментария:<br> 
<textarea name="text" rows="5" cols="50" class="text"></textarea><br>            
<br> 
<input name="id" type="hidden" value="<?php echo $id; ?>"> 
<input class="adscom" name="button" type="button" value='Добавить комментарий' onclick="doLoad(document.getElementById('addcom'))"> 
</form> 
</div>


<? 
// Запрет на кэширование 
header("Expires: Mon, 23 May 1995 02:00:00 GTM"); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GTM"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 
//**** 

$log ==""; 
$error="no"; //флаг наличия ошибки 

require_once 'JsHttpRequest.php'; 
$JsHttpRequest =& new JsHttpRequest("windows-1251"); 

//Короткие имена переменных и обрезка пробелов img_title 
$text = trim($_POST['text']); 
$author = trim($_POST['author']); 
$id = trim($_POST['id']); 

//Проверка email адреса 

if($author == ''){ 
    
$log .= "Пожалуйста, введите Ваше имя<br>"; 
    
$error = "yes"; 
} 

//Проверка наличия введенного текста комментария 
if (empty($text)){ 
    
$log .= "Необходимо указать текст сообщения!<br>"; 
    
$error = "yes"; 
} 
else{ 
    
//Должнен быть хоть один символ на русском языке 
    
$spam=1;   

    for(
$i=0;$i<strlen($text);$i++){ 
        if((
ord($text[$i])>=192) && (ord($text[$i])<=255)){$spam=0;break;} 
    } 

    if (
$spam == 1)    { 
        
$log .= "Ваше сообщение не содержит ни одной русской буквы.<br>"; 
        
$error = "yes";     
    }  

} 

//Проверка длины текста комментария 
if(strlen($text)>1000){ 
    
$log .= "Слишком длинный текст, в вашем распоряжении 1000 символов!<br>"; 
    
$error = "yes"; 
} 
      
//Проверка на наличие длинных слов 
$mas = preg_split("/[\s]+/",$text); 
foreach(
$mas as $index => $val){ 
    if (
strlen($val)>40)  { 
        
$log .= "Слишком длинные слова (более 40 символов) в тексте записи!<br>"; 
        
$error = "yes"; 
        break; 
    } 
} 
     
//Экранирование и преобразование опасных символов 
if (!get_magic_quotes_gpc()){ 
    
$text = addslashes($text); 
    
$author = addslashes($author); 
    
$cod = addslashes($cod); 
} 

$text = htmlspecialchars($text); 
$author = htmlspecialchars($author); 
$cod = htmlspecialchars($cod); 

//Если нет ошибок добавляем в базу   
if($error=="no"){ 
    
$date = date("d-m-Y в H:i"); 
    
$result2 = mysql_query("INSERT INTO com (post,author,text,date) VALUES ('" . mysql_real_escape_string($id) . "','" . mysql_real_escape_string($author) . "','" . mysql_real_escape_string($text) . "','$date')"); 
    
//**** 
     
$id_pu = $_REQUEST['id'];     
$address = "my@mail.ru";  
$subject = "Новый комментарий на сайте";  
$post_title = $myrow3["title"];  


$message = "Появился комментарий к заметке -  ".$post_title."<br>Комментарий добавил(а): ".$author."<br>Текст комментария:    
 "
.$text."<br>Ссылка на заметку:<a href='www.site.ru/view.php?id=".$_REQUEST['id']."'>this is link</a>";  

  
$headers = 'Content-Type: text/html;charset=windows-1251';   
  
mail($address,$subject,$message,$headers);  
  
     
    
$ok="<div><strong>".$author."</strong><br>Добавлено: ".$date."<br>".$text."</div>"; 
     
    
//Помещаем результат в массив 
    
$GLOBALS['_RESULT'] = array( 
    
'error' => 'no', 
    
'ok' => $ok 
    
); 

} 
else {
//если ошибки есть 
     
$log = "<div><strong><font color='red'> Ошибка! </font></strong><br>".$log."</div>"; 
    
//Отправляем результат в массив 
    
$GLOBALS['_RESULT'] = array( 
    
'error' => 'yes',       
    
'er_mess' => $log); 
}   
?>

  Ответить  
 
 автор: сотка   (13.12.2011 в 19:53)   письмо автору
 
   для: usa   (13.12.2011 в 19:31)
 

под модерированием что понимается? редактирование добавленных коментов или ответ на них?

  Ответить  
 
 автор: usa   (13.12.2011 в 20:00)   письмо автору
 
   для: сотка   (13.12.2011 в 19:53)
 

редактирование, просмотр и их публикация

  Ответить  
 
 автор: сотка   (13.12.2011 в 20:13)   письмо автору
 
   для: usa   (13.12.2011 в 20:00)
 

INSERT INTO заменить на оператор UPDATE ,который обновляет записи в таблице БД

  Ответить  
 
 автор: ladan   (13.12.2011 в 20:18)   письмо автору
 
   для: usa   (13.12.2011 в 19:31)
 

по идеи они ведь должны выводиться на сайте? В этом скрипте идет только запись комментов в базу, а модерирование делается до обработчика, когда все комменты выводятся в цикле. И проверка от спама в коде просто так не ставится :) Нужно в бд создать еще одну табличку с 2 полями, id и pr. В pr помещается число, например, 324678987. А в форме с комментами создай еще одно поле input и в него человек должен ввести число с картинки(число 324678987). После отправки данных, в твоем скрипте должен быть еще один запрос на выборку из таблицы, где леэит это число(оно нужно для сравнения)



<h1>Оставить свой комментарий:</h1>  
<div id='cerror'></div>  
<div align="center"><form action="#" method="POST" enctype="multipart/form-data" name="addcom" id="addcom" onSubmit="return false">  
Ваше имя:<br>  
<input name="author" type="text" size="30" class="pole" id="author"><br><br>  
Текст комментария:<br>  
<textarea name="text" rows="5" cols="50" class="text"></textarea><br>             
<br>  
<input name="id" type="hidden" value="<?php echo $id; ?>">  
<img scr="путь к картинке с числом(ее можно сделать в графическом редакторе)"><input name="input" type="text">
<input class="adscom" name="button" type="button" value='Добавить комментарий' onclick="doLoad(document.getElementById('addcom'))">  
</form>  
</div>





<?
$rel 
= mysql_query("SELECT pr FROM spam");
$mir =  mysql_fetch_array($rel);

if(
$mir['pr'] != $_POST['input']) {exit("Неверное число с картинки");}


/* далее твой скрипт идет */
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования