Сейчас: 09:30:52   24-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеМодерация комментариев
1
20

Модерация комментариев на сайте

Данная тема является дополнением к теме Добавление комментариев на сайт и содержит PHP код, предназначенный для работы с комментариями из той темы.


Данная тема мало чем отличается от темы Форма модерации комментариев к темам, но все же в ней есть некоторые изменения.


Далее мы рассмотрим код, позволяющий модерировать (изменять, удалять или публиковать) сообщения, оставленные посетителями сайта через форму добавления комментариев к темам сайта.


Предлагаемый нами PHP код для модерации комментариев Вам следует добавить в админ панель Вашего сайта, либо поместить в отдельный файл, доступный только по паролю.


Ниже приведен скриншот формы модерации комментариев, которая должна получиться у Вас в результате использования кода из данной темы.


Скриншот формы модерации комментариев
Форма модерации комментариев.

Для получения точно такой же формы модерации комментариев, оставленных к темам, как на скриншоте выше, поместите следующий код в Вашу админ панель или отдельно созданный PHP файл, недоступный другим пользователям:

PHP код:
<?php
$db
=mysqli_connect("localhost","Ваш_логин","Ваш_пароль","Имя_базы") or die();
$res=mysqli_query($db,"set names utf8");
if (isset(
$_GET["del"])) {
 
$res=mysqli_query($db,"DELETE FROM comment WHERE id='".$_GET["del"]."'");
 
header("Location: adminka.php");
}
if (isset(
$_GET["ok"])) {
 
$res=mysqli_query($db,"UPDATE comment SET moderation=1 WHERE id='".$_GET["ok"]."'");
 
header("Location: adminka.php");
}
if (
$_POST["com"]!='') {
 
$res=mysqli_query($db,"UPDATE comment
 SET message='"
.htmlspecialchars($_POST["com"])."' WHERE id='".$_POST["com_id"]."'");
 
header("Location: adminka.php");
}
?>

Данный код отвечает за модерацию (изменение, удаление и опубликование) оставленных посетителями комментариев.


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

PHP код:
<?php
echo '<div align="center">';

$res=mysqli_query($db,"SELECT * FROM comment WHERE moderation=0 ORDER BY id LIMIT 5");
$num=mysqli_num_rows($res);

if (
$num>0) {
 while (
$com=mysqli_fetch_array($res)) {
  echo 
'<table style="border:1px solid #000; margin:5px; background-color:#eee;">';
  echo 
'<tr align="center"><td width="190"><b>'.$com["login"].'</b></td>';
  echo 
'<td width="200">id темы - '.$com["theme_id"].'</td>';
  echo 
'<td width="170">'.date('H:i:s d.m.Y'$com["date"]).'</td><td></td>';
  echo 
'<tr align="center"><td colspan="3"><form method="POST" action="adminka.php">';
  echo 
'<textarea cols="70" rows="5" name="com">'.$com["message"].'</textarea></td>';
  echo 
'<td colspan="4"><input type="hidden" name="com_id" value='.$com["id"].'>';
  echo 
'<input type="submit" value="Изменить"></form><br><br>';
  echo 
'<a href="adminka.php?del='.$com["id"].'">Удалить</a><br><br>';
  echo 
'<a href="adminka.php?ok='.$com["id"].'">Показать</a></td></tr></table>';
 }
}
else echo 
'<b>Новых комментариев нет!</b><br>';
echo 
'</div>';
?>

В PHP кодах выше предполагается, что они будут размещены в файле adminka.php.


Если Вы поместите рассмотренные коды в файл с другим именем, то не забудьте заменить в обоих кодах adminka.php на новое имя Вашего файла.


Обращаем Ваше внимание на то, что на каждый комментарий создается своя отдельная форма для модерации. Если Вы хотите изменить количество одновременно видимых комментариев в порядке их добавления, то измените в строчке:

Цитата:
$res=mysqli_query($db,"SELECT * FROM comment WHERE moderation=0 ORDER BY id LIMIT 5");

значение LIMIT 5 на необходимое Вам количество одновременно доступных комментариев.


После добавления на свой сайт выше приведенных PHP кодов у Вас должна получиться точно такая же форма для модерации оставленных комментариев к темам сайта, как и на скриншоте в начале данной темы.

Дата создания: 21:48:07 19.04.2015 г.
Посещений: 9817 раз(а).

Комментарии посетителей (7 шт.):
Сергей
2
# 3154
(11:33:09  03.04.2016 г.)

Почему у меня в форме модерации текст, который написал пользователь, выводит какие-то каракули? Так же и имя, которое он написал, выводится каракулями.
Кодировка формы модерации windows-1251.
Ответить

Administrator
2
# 3155
(13:53:28  03.04.2016 г.)

Измените кодировку БД в строчке: $res=mysqli_query($db,"set names utf8"); на нужную. Так же посмотрите, чтобы сам файл с формой модерации был сохранен в нужной кодировке.
Ответить

Лев
0
# 3192
(13:37:24  01.05.2016 г.)

У меня пишет:
PHP Fatal error: Call to undefined function mysqli_query() in D:\adminka.php on line 4 PHP Stack trace: PHP 1. {main}() D:\adminka.php:0
вот это строка 4
$res=mysqli_query($db,"SELECT * FROM comment WHERE moderation=0 ORDER BY id LIMIT 5");
Ответить

Administrator
-2
# 3195
(15:22:39  01.05.2016 г.)

Скорее всего, у Вас не поддерживается MySQLi, либо неправильно подключили MySQLi.
Ответить

Алексей
1
# 4482
(14:10:22  12.06.2019 г.)

Подскажите пожалуйста, как можно сделать модерацию ЛЮБЫХ комментариев (чтобы все комменты выводились)?
Ответить

Сергей
0
# 4747
(18:28:00  02.11.2020 г.)

Здравствуйте. Поясните, пожалуйста, что дает строка header("Location: adminka.php"); У меня выскакивает ошибка Warning: Cannot modify header information - headers already sent by (output started at...
Ответить

Administrator
0
# 4748
(19:20:30  02.11.2020 г.)

Здравствуйте. Эта строка делает редирект на себя (если админку Вы назвали adminka.php), чтобы обновить страничку после удаления или модерации комментария. Ошибка вероятнее всего появляется из-за того что перед PHP кодом что-то выводится на экран (любой html тег или текст).
Ответить

Закрыть
Ваше имя:
430 + 17 =
Добавить комментарий:
Ваше имя:
430 + 17 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 8

Какой браузер Вы используете?