Скрипт добавления комментариев сайта на php

PHP cкрипт добавления комментариев это очень полезный PHP скрипт, поскольку дает возможность наполнения страниц сайта, особенно если страницы выполнены в виде статей, дополнительным тематическим контентом, что дает, если можно так сказать, дополнительную пищу для поисковых ботов.

Но такая возможность имеет и обратную сторону. Это возможность заспамить страницы ресурса разного рода ссылками и нетематическими текстами. Чтобы устранить эту проблему php скрипт обязательно должен содержать защиту от роботов спамеров и возможность предмодерации комментариев.

Если предмодерация комментариев это не особо важный момент, то защита от роботов спамеров является обязательной. Выполняется такая защита по разному. Мы выполним ее методом добавления строки ввода суммы каких либо чисел с картинок. В простейшем случае достаточно хорошо работает и одна картинка. Нужно только ее выполнить с хитростью, так, чтобы никакой робот спамер не смог разгадать эту хитрость.

Форма для ввода комментариев не должна содержать строки для ввода URL сайта. Иначе это будет только дополнительный соблазн для спамеров в человеческом обличии. Хотя полезные ссылки, если они будут заслуживать внимания, вполне можно будет оставлять в прямом виде в тексте самого комментария.

Итак для начала определимся где будет располагаться скрипт добавления комментариев в нашем проекте сайта на php. Выделим для него папку comment в директории php. Полный путь до папки скрипта добавления комментариев в нашем проекте будет D:/Mysitephp/php/comment. Кроме того для того, чтобы не рушить ранее наработанное и дать возможность полноценно независимо работать скрипту добавления комментариев, создадим в нашем шаблоне еще одну рубрику и назовем ее "Полезные статьи". В рубрике создадим одну страницу, например с названием article1.html и сохраним ее в папке templates/pages, а также сделаем добавления к скриптам menu.php и move.php для открытия данной страницы и переходу на нее по ссылке на шаблоне сайта. Это можно сделать по аналогии и методике, которая описана на соответствующих страницах данного раздела о формировании меню и ссылочных переходов сайта на php. Также в папке comment создадим папку для хранения текстовых файлов самих комментариев и назовем ее, например datacomm. Полный путь к папке будет D:/Mysitphp/php/comment/datacomm.

Начнем с формы для скрипта добавления комментариев. Ниже представлен один из возможных вариантов, который и будет использован в проекте. Необходимо создать новый html документ заполнить его ниже приведенным кодом и сохранить под именем formcomm.html в папке trmplates/pages проекта. Полный путь к файлу будет D:/Mysitephp/templates/pages/formcomm.html

<form method='post' action=''>
<table align='center' width='400'><tr><td>
<font color='FF00FF'>* Заполните все поля</font><br />
* Ваше имя:<br />
<input type='text' name='comname' size='40' class="in1" onfocus="this.style.background='#ccffcc'" onblur="this.style.background='#ffffff'" /><br />
<div>* Комментарий
</div>
<textarea rows="7" cols='60' name="comtext" wrap="virtual" class="ta1" onfocus="this.style.background='#ccffcc'" onblur="this.style.background='#ffffff'"></textarea>
</td></tr>
<tr><td>
<p>Введите сумму чисел с картинки (проверка от
автороботов):</p>
<p><img style="MARGIN-TOP: 5px"
src="/images/23.gif" /><input
id="pr" onblur="this.style.background='#ffffff'"
style="BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; MARGIN-BOTTOM: 8px; BORDER-LEFT: gray 1px solid; BORDER-BOTTOM: gray 1px solid"
onfocus="this.style.background='#FEE688'" size="5" name="pr" /> </p>
</td></tr>
<tr><td>
<input class="bt1" type="submit" value="Добавить" name="submit" />
<input class="bt1" type="reset" value="Очистить" name="reset" />
</td></tr>
</table>
</form>

Встроить появление формы на странице article1.html несложно. Для этого вполне подойдет операция "точка" или операция склеивания строк. Что нужно склеить? Склеить нужно саму страницу и форму для комментариев к ней, а далее необходимо будет добавлять к этому еще и сами комментарии. Далее необходимо внести ещенекоторые изменения в файл перехода по ссылкам move.php, файл установок setings.php, файл шаблонизатора main.php. Полезно будет самостоятельно попробовать внести все необходимые изменения для обеспечения работы скрипта добавления комментариев, который представлен ниже.

<?php

// Конечный результат работы скрипта помещается в переменную $comment
// Каждая статья имеет свой текстовый файл с комментами,
// название и путь к файлу в setings.php

// Строка для уменьшения предупреждений денвера
Error_Reporting(E_ALL & ~E_NOTICE);
// Отключить все сообщения об ошибках
error_reporting(0);
// Запись в $addition формы formcomm.html в виде строки
$addition = file_get_contents ( "templates/pages/formcomm.html" );
// Если информация из формы послана скрипту
if ($submit == 'Добавить')
{
// Если не все поля заполнены, выводим ошибку nocomment.html
if ($comname=='' or $comtext=='' or $pr!='5')
// Собщение об ошибке добавления комментов
$comment = file_get_contents ("php/comment/nocomment.html");
// Если все заполнено и не превышен лимит комментов
// Лимит устанавливается в файле setings.php переменная $maxcomm
elseif(count(file($general_file)) < $maxcomm + 1)
{
$comtext = str_replace("<","&lt",$comtext);
$comtext = str_replace(">","&gt",$comtext);
$comtext = str_replace("\n","<br>",$comtext);
$comtext = str_replace("\r","",$comtext);
$today=date("Y m d h:i:s");
$inname = "||"."<p align=right>".$today."&nbsp;&nbsp;Добавил: &nbsp;&nbsp;".$comname."</p>";

// Открыть файл для записи
$fp = fopen("$general_file","a");
// блокировка
flock($fp,LOCK_EXT);
fputs($fp,"\n");
// Записать данные в файл
fputs($fp,"$comtext$inname");
fclose($fp, "$general_file");

$adcomm = "";
}
else
$adcomm = "<div align=center><font color=000080 size=3>
<u>Комментарии больше не принимаются !</u></font></div>";
}
// Комментарии размещаются в $comment
$messages=file($general_file);
$filecount=count($messages);
$messagess=array_reverse($messages);
for($i=0;$i<=$filecount-2;$i++)
{
$mline=explode("||",$messagess[$i]);
$commenttb = "<div id=comment align=justify>$mline[0]<br/>$mline[1]</div>";
$comment = $commenttb. "<br>". $comment;
}
$filecount = $filecount - 1;
// Комментарии, конечная строка
$comment = $comment."<br>"."Всего комментариев:&nbsp;".$filecount."<br><br>".$adcomm;

?>

Скрипт необходимо разместить в новый файл, например под названием comment.php, а сам файл сохранить в директории php/comment/ нашего проекта. Полный путь к скрипту будет D:/Mysitephp/php/comment/comment.php. Далее, после всех проведенных изменений, необходимо выполнить операцию синхронизация, запустить локальный сервер, запустить в браузере наш локальный сайт и перейти по ссылке меню первой статьи. Ниже на странице с шаблоном статьи должна появиться форма для добавления комментариев. Можно попробовать поуправлять кнопками на фоме и добавить свой комментарий. Если не все не сработало, значит при самостоятельном внесении изменений, о которых шла речь выше, в скрипты были допущены ошибки. Чтобы выяснить в чем, можно скачать проект обновленный скриптом добавления комментариев и для устранения разночтений заменить им предыдущий, внимательно изучив изменения проведенные в скриптах. Далее все как обычно, выполнив синхронизацию, запустить в браузере локальный сайт, перейти на ссылку "Статья 1" и пработать на странице с формой добавления комментариев.
Top.Mail.Ru