Php форма ввода комментария

Скрипт добавления комментариев сайта на 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.

Читайте также:  Python divide with remainder

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

* Заполните все поля

* Ваше имя:

* Комментарий

Введите сумму чисел с картинки (проверка от
автороботов):

src=»/images/23.gif»/> 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»/>

Встроить появление формы на странице article1.html несложно. Для этого вполне подойдет операция «точка» или операция склеивания строк. Что нужно склеить? Склеить нужно саму страницу и форму для комментариев к ней, а далее необходимо будет добавлять к этому еще и сами комментарии. Далее необходимо внести ещенекоторые изменения в файл перехода по ссылкам move.php, файл установок setings.php, файл шаблонизатора main.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»,»
«,$comtext);
$comtext = str_replace(«\r»,»»,$comtext);
$today=date(«Y m d h:i:s»);
$inname = «||».»

«.$today.»  Добавил:   «.$comname.»

«;

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

$adcomm = «»;
>
else
$adcomm = «


Комментарии больше не принимаются !

«;
>
// Комментарии размещаются в $comment
$messages=file($general_file);
$filecount=count($messages);
$messagess=array_reverse($messages);
for($i=0;$i <=$filecount-2;$i++)
$mline=explode(«||»,$messagess[$i]);
$commenttb = «

$mline[0]$mline[1]

«;
$comment = $commenttb. «
«. $comment;
>
$filecount = $filecount — 1;
// Комментарии, конечная строка
$comment = $comment.»
«.»Всего комментариев: «.$filecount.»

«.$adcomm;

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

Источник

Как сделать комментирование на сайте

Как сделать комментирование на сайте

Очень часто у меня спрашивают, как сделать комментирование на сайте на PHP. Я решил не объяснять на пальцах каждому, а просто написать статью, в которой показать, как делается комментирование на сайте с использованием PHP и MySQL.

Мы сейчас будем разбирать PHP-код для создания комментирования на сайте, где имеется множество страниц, на каждой из которых свои комментарии. Например, таким образом, реализовано у меня. Это самый популярный вариант, когда у каждой страницы (статьи, поста и прочего) свой набор комментариев.

Первым делом, создаём таблицу в базе данных (пусть она называется comments), где будут храниться комментарии со следующими полями:

  • id — уникальный идентификатор.
  • page_id — хранится идентификатор той страницы, на которой находится данный комментарий.
  • name — имя того, кто оставил комментарий.
  • text_comment — текст комментария.

После создания таблицы, давайте создадим HTML-форму, которую нужно будет размещать на каждой странице, где Вы хотите разрешить добавление комментариев:

Единственная особенность данного HTML-кода — это input hidden. В value должен находиться уникальный идентификатор текущей страницы (статьи или поста).

Теперь займёмся обработкой формы. Для этого создаём файл comment.php с таким кодом:

/* Принимаем данные из формы */
$name = $_POST[«name»];
$page_id = $_POST[«page_id»];
$text_comment = $_POST[«text_comment»];
$name = htmlspecialchars($name);// Преобразуем спецсимволы в HTML-сущности
$text_comment = htmlspecialchars($text_comment);// Преобразуем спецсимволы в HTML-сущности
$mysqli = new mysqli(«localhost», «root», «», «db»);// Подключается к базе данных
$mysqli->query(«INSERT INTO `comments` (`name`, `page_id`, `text_comment`) VALUES (‘$name’, ‘$page_id’, ‘$text_comment’)»);// Добавляем комментарий в таблицу
header(«Location: «.$_SERVER[«HTTP_REFERER»]);// Делаем реридект обратно
?>

И, наконец, последняя стадия — это вывод комментариев на странице:

$page_id = 150;// Уникальный идентификатор страницы (статьи или поста)
$mysqli = new mysqli(«localhost», «root», «», «db»);// Подключается к базе данных
$result_set = $mysqli->query(«SELECT * FROM `comments` WHERE `page_id`=’$page_id'»); //Вытаскиваем все комментарии для данной страницы
while ($row = $result_set->fetch_assoc()) print_r($row); //Вывод комментариев
echo «
«;
>
?>

Вот и всё. Безусловно, это лишь база, необходимая для создания возможности комментирования на сайте. Здесь самое минимальное, что придётся сделать — это оформить внешний вид комментариев. Также надо обязательно проверить поступившие данные из формы. Также можно добавить дополнительные поля (например, e-mail ещё запрашивать).

Но всё это уже детали, а комментирование на PHP уже сделано.

Чтобы понять весь алгоритм и, главное, научиться самостоятельно создавать подобные скрипты, обязательно изучите PHP и MySQL, и в этом Вам поможет мой Видеокурс «PHP и MySQL с Нуля до Гуру«: http://srs.myrusakov.ru/php

Создано 01.02.2012 14:47:38

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 159 ):

    не понял с пунктом «вывод комментариев на странице» это создаётся ещё один php файл?? или все в одном? и ещё один вопрос, создал форму, как у вас и пхп файл, как нажимаю в форме кнопку отправить пишет вот такое: query(«INSERT INTO `comments` (`name`, `page_id`, `text_comment`) VALUES (‘$name’, ‘$page_id’, ‘$text_comment’)»);// Добавляем комментарий в таблицу header(«Location: «.$_SERVER[«HTTP_REFERER»]);// Делаем реридект обратно ?>

    Вы либо невнимательно читаете, либо Вам ещё просто рано про это вообще читать. Вы основы точно знаете? Теперь по вопросам: 1. Вывод комментариев на той же странице, где форма. 2. Как он может такое писать? Только если, конечно, Вы не открываете через file:///Z:\home. Если так, то забудьте про эту статью. С такой проблемой новички сталкиваются в первый день обучения PHP.

    Евгений вы для начала разберите алгоритм создания комментариев. Всё создаётся на одной или двух страницах. Допустим если на двух то: text.php //это файл для формы и вивода комментов update_comment.php //это фаил обработчик Вот и всё!

    сорри поспешил, ушел дальше разбираться

    Спасибо Михаил всё это знал только вот не знал как id страницы отправить спасибо!!

    Салам! Михайил У меня вывод комментариев на странице не выходить. В базе MySQL данные есть но на странице нету!

    Тысяча причин, все перечислить невозможно. Могу лишь назвать парочку: по-другому названы поля в таблице, соответственно, неверный запрос. Либо ещё файл не обрабатывает PHP вообще, либо он имеет расширение html, либо запускается неправильно (допустим, просто открывается через двойной клик в браузере).

    Михаил, а идентификатор страницы, обычная строка или с Auto_increment

    Это уникальный номер страницы (число). А какой он, неважно, главное, чтобы число и уникальный.

    Источник

    Оцените статью