Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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 Яндекс.Метрика Яндекс цитирования