Сейчас: 03:14:20   29-го марта 2024 г.
UsefulScript.ruСкриптыРазныеФорма добавления комментариев
25
114

Форма добавления комментариев к темам

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


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


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


Для начала в MySQL необходимо будет создать две таблицы: comment и ocenka_comment.

В таблице comment мы будем хранить тексты комментариев и информацию о них (дату и время оставления комментария, имя автора, тему, к которой оставлен комментарий).

При необходимости можно добавить дополнительные поля (например, для модерации).

В таблице ocenka_comment мы будем хранить дату и время оценки комментария, идентификатор комментария, IP адреса с которого был оценен комментарий и саму оценку.


Структура данных таблиц приведена на рисунках ниже:


Таблица, содержащая тексты комментариев и информацию о них
Таблица comment.

Таблица, содержащая информацию по оценкам комментариев
Таблица ocenka_comment.

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


После того, как таблицы в MySQL были созданы, в самое начало Ваших страничек (выше тега <head>) поместите PHP код обработки отправленных сообщений:

PHP код:
<?php
session_start
();

$link mysql_connect("localhost""Ваш_логин""Ваш_пароль") or
die(
"Could not connect: " mysql_error());
mysql_select_db("Имя_базы"$link);

$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');

if (isset(
$_POST[contr_cod])) {
 
$_SESSION[comment_mess_login]=$_POST[mess_login];
 
$_SESSION[comment_user_text]=$_POST[user_text];
 if (
get_magic_quotes_gpc()=="0") {
  
$_SESSION[comment_mess_login]=
         
mysql_real_escape_string($_SESSION[comment_mess_login]);
  
$_SESSION[comment_user_text]=
        
mysql_real_escape_string($_SESSION[comment_user_text]);
 }
 
$_SESSION[comment_mess_login]=htmlspecialchars($_POST[mess_login]);
 
$_SESSION[comment_user_text]=htmlspecialchars($_POST[user_text]);

 if (
md5($_POST[contr_cod])==$_POST[prov_summa]) {
  
$result mysql_query("insert into comment (date,theme,login,message)
  values ('"
.date("Y-m-d H:i:s")."','".$_SESSION[mess_url]."',
  '"
.$_SESSION[comment_mess_login]."','".$_SESSION[comment_user_text]."')");
  
$_SESSION[send]='Комментарий принят и ожидает модерации.';
  
$_SESSION[comment_mess_login]='';
  
$_SESSION[comment_user_text]='';
  
header("Location: $_SESSION[mess_url]#last");
  exit;
 }
 else {
  
$_SESSION[send] = "Неверный проверочный код!";
  
header("Location: $_SESSION[mess_url]#last");
  exit;
 }
}
?>

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


Не забудьте при подключении к Вашей MySQL базе в функции mysql_connect() указать Ваши логин, пароль и имя БД.


После добавления кода проверки правильности введения проверочного кода, в начало Ваших страничек поместите PHP код определения IP адреса посетителя:

PHP код:
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP']))
    
$ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty(
$_SERVER['HTTP_X_FORWARDED_FOR']))
    
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else 
$ip=$_SERVER['REMOTE_ADDR'];
$ip_position=strpos($ip,',');
if (
$ip_position>0$ip_short=substr($ip0$ip_position);
else 
$ip_short=$ip;
?>

Если у Вас уже имеется переменная, содержащая IP адреса посетителя, то приведенный выше код можно не добавлять. Просто присвойте переменной $ip_short уже имеющийся IP адреса посетителя. Обращаем Ваше внимание на то, что переменная $ip_short должна содаржать только один IP адрес (без прокси через запятую).


Далее в том месте странички, где должны выводиться комментарии, добавляем следующий код:

PHP код:
<?php
if (is_numeric($_POST[comment_id])and($_POST[ocenka]=='0' or $_POST[ocenka]=='1')){
$result mysql_query("SELECT count(id),ocenka FROM ocenka_comment
WHERE comment_id='"
.$_POST[comment_id]."' and ip='".$ip_short."'"$link);
$number mysql_fetch_array($result);
if (
$number[0]==0) {
    
$result mysql_query("insert into ocenka_comment (date,comment_id,ip,ocenka)
    values ('"
.date("Y-m-d H:i:s")."','".$_POST[comment_id]."','".$ip_short."',
    '"
.$_POST[ocenka]."')"); }
elseif (
$number[ocenka]!=$_POST[ocenka]) {
    
$result mysql_query("UPDATE ocenka_comment
    SET date='"
.date("Y-m-d H:i:s")."',ocenka='".$_POST[ocenka]."'
    WHERE comment_id='"
.$_POST[comment_id]."' and ip='".$ip_short."'"); }
}

$result mysql_query("SELECT * FROM comment
WHERE theme='"
.$_SESSION[mess_url]."' and moderation=1 ORDER BY id"$link);
$number mysql_num_rows($result);

if (
$number>0) {
echo 
'<hr><div align="center" style="padding:3px; border-radius:5px;">
<u><b>Последние комментарии посетителей:</b></u><br>'
;

for (
$n=1$n<=$number$n++) {
 
$comments=mysql_fetch_array($result);

 
$result_minus mysql_query("SELECT sum(ocenka=1), sum(ocenka=0) FROM ocenka_comment
 WHERE comment_id='"
.$comments[id]."' LIMIT 1"$link);
 
$ocenka_com=mysql_fetch_array($result_minus);

 echo 
'<br><table border="0" width="100%" style="border: 1px solid #4874a3;"><tr>';
 echo 
'<td align="left">';
 echo 
'<div id="m'.$comments[id].'"></div><b>'.$comments[login].'</b></td>';
 echo 
'<td width="140">';
 echo 
'<span style="font-size:12px;">('.$comments[date].')</span></td>';
 echo 
'<td width="20">';
 echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#m'.$comments[id].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$comments[id].'">';
 echo 
'<input type="hidden" name="ocenka" value="1">';
 echo 
'<input type="image" src="image/up.png" title="Хороший комментарий">';
 echo 
'</form></td>';
 echo 
'<td width="5"><b>'.($ocenka_com[0]-$ocenka_com[1]).'</b></td>';
 echo 
'<td width="20">';
 echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#m'.$comments[id].'">';
 echo 
'<input type="hidden" name="comment_id" value="'.$comments[id].'">';
 echo 
'<input type="hidden" name="ocenka" value="0">';
 echo 
'<input type="image" src="image/down.png" title="Плохой комментарий">';
 echo 
'</form></td></tr></table>';
 echo 
'<table border="0" width="100%" style="border: 1px solid #eeeeee;"
bgcolor="#eeeeee">'
;
 echo 
'<tr><td colspan="5" align="justify">';
 echo 
wordwrap(nl2br($comments[message]), 70"\n"1);
 echo 
'</td></tr></table>';
}
echo 
'</div><br>';
}
else echo 
'<hr>';
?>

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

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


Если модерация комментариев администрацией Вам не нужна, и Вы планируете публиковать все комментарии, то просто удалите and moderation=1 из выше приведенного кода. Но мы бы не рекомендовали показывать неотмодерированные комментарии, т.к. вероятнее всего произойдет захламление сайта СПАМ-ссылками. Если Вы решили модерировать комментарии то, для того чтобы разрешить вывод отмодерированных комментариев, необходимо изменить значение moderation в таблице comment с 0 на 1.

Более подробно о том, как следует модерировать оставленные посетителями комментарии можно посмотреть в теме Форма модерации комментариев к темам.


Далее необходимо создать саму форму для отправки комментариев и добавить ее на сайт. Делается это следующим образом:

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

echo 
'<form method="POST" action="'.$_SESSION[mess_url].'#last">';
echo 
'<table border="0" style="border: 1px solid #4874a3;
border-radius:8px;" bgcolor="#7799ee" cellspacing="4" align="center">'
;
echo 
'<tr><td colspan="2" align="center">';
echo 
'<b>Добавить комментарий к теме:</b><br>';

$prov_cod=rand(1000,9980); $prov_cod_2=rand(1,19);

echo 
'<textarea cols="65" rows="5" name="user_text" required>'
.$_SESSION[comment_user_text].'</textarea><br>';
echo 
'</td></tr><tr><td width="300">';

echo 
'<b>Ваше имя: </b><input type="text" name="mess_login" maxlength="20"
value="'
.$_SESSION[comment_mess_login].'" required>';

echo 
'</td><td align="right">';
echo 
'<b>'.$prov_cod.' + '.$prov_cod_2.' = </b>';
echo 
'<input type="hidden" name="prov_summa" value="'.md5($prov_cod+$prov_cod_2).'">';

echo 
'<input type="text" name="contr_cod" maxlength="4" size="4" required>';
echo 
'<input type="submit" value="Отправить"></td></tr></table></form>';

$_SESSION[comment_mess_login]='';
$_SESSION[comment_user_text]='';

if (isset(
$_SESSION[send])and($_SESSION[send]!="")) {
echo 
'<font color="red"><b>'.$_SESSION[send].'</b></font>';
$_SESSION[send]="";
}
echo 
'</div>';
?>

Данная форма отправки комментариев содержит специальное поле для защиты от ботов.


Обращаем Ваше внимание на то, что в выше приведенных кодах некоторые строчки кода были разорваны и перенесены из-за своей длинны. Данные строчки следует писать в одну строку.


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


P.S. Данная тема была обновлена и доработана. Подробнее с новой темой можно ознакомиться по ссылке Добавление комментариев на сайт.

Дата создания: 15:46:08 29.04.2012 г.
Дата обновления: 21:03:02 15.07.2012 г.
Посещений: 47763 раз(а).

Комментарии посетителей (63 шт.):
Алексей
50
# 127
(13:06:09  01.05.2012 г.)

Спасибо Автору сайта за чудесную форму! Работает быстро, достаточно просто интегрируется в любой сайт, легко адаптировать под свои потребности. Да и вообще подобных форм можно по пальцам пересчитать в интернете. Эта самая лучшая!
Ответить

Administrator
7
# 208
(19:33:19  05.07.2012 г.)

На нашем форуме есть специальная ветка, в которой обсуждаются полезные дополнения, позволяющие сделать данную форму добавления комментариев к темам более функциональной.
Ссылка - http://usefulscript.ru/forum/showthread.php?tid=122
Ответить

Юрий
2
# 385
(10:37:15  10.11.2012 г.)

А есть ли возможность сделать поиск на сайте по комментариям из БД?
Ответить

Administrator
3
# 386
(13:54:43  10.11.2012 г.)

Юрий, конечно можно, используйте такой запрос:
$result = mysql_query("SELECT * FROM comment WHERE message LIKE '%".$search_text."%'", $link);
где $search_text - искомый текст.

Дальнейшее обсуждение данного вопроса перенес на форум - Поиск на сайте по комментариям из БД
Ответить

Кто-то
-1
# 484
(12:39:59  22.12.2012 г.)

Делал все, как говорилось, но выдает ошибки.
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/u391369400/public_html/index3.html:3) in /home/u391369400/public_html/index3.html on line 4
Как это исправить?
Ответить

Administrator
2
# 485
(13:59:51  22.12.2012 г.)

Переместите строчку session_start(); в самое начало странички до вывода тегов <html>, <head> и т.д.
Ответить

Кто-то
0
# 488
(19:46:00  22.12.2012 г.)

Вот так написал.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<?php
session_start();
...
Все равно те же ошибки.
Ответить

Administrator
2
# 489
(19:53:40  22.12.2012 г.)

Я же уже написал, что session_start(); нужно писать ДО тегов <html>, <head> и т.д.:
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
Ответить

Антон
2
# 664
(12:13:44  02.03.2013 г.)

Здравствуйте! Вроде всё сделал правильно, но окно "Добавить комментарий к теме:" отображается с отрывками кода. Подскажите, пожалуйста, что делать.
Тот код высвечивался в просмотре с компьютера, а когда закачал на хостинг вышло вот это:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by . . .

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent . . .

Warning: mysql_connect() [function.mysql-connect]: Access denied for user . . .
Could not connect: Access denied for user '. . .'@'localhost' (using password: YES)
Ответить

Administrator
3
# 665
(12:27:05  02.03.2013 г.)

У Вас тоже самое, что и в комментариях выше. Поместите <?php session_start(); ?> самой первой строчкой странички!
P.S. Последняя ошибка означает, что Вы неправильно подключаетесь к MySQL. Проверьте, правильно ли Вы указали название базы данных, логин и пароль.
Ответить

Алексей
0
# 825
(19:38:01  04.05.2013 г.)

Не форма комментов, а набор символов, который и на странице также выскакивает. Хотя всё сделал, как сказано.
Ответить

Administrator
2
# 826
(19:48:55  04.05.2013 г.)

Укажите в MySQL и на сайте одинаковую кодировку.
Для MySQL - $result = mysql_query("set names utf8", $link);
Для сайта - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Ответить

Виталий
1
# 988
(21:46:15  21.07.2013 г.)

А как можно выставить лимит по времени добавления комментариев одним человеком? Например, чтобы с определенного IP - в течении 10 мин - один раз? И если можно, то поподробнее на примере данной формы. Очень надо. Заранее спс.
Ответить

Administrator
2
# 989
(22:02:20  21.07.2013 г.)

Для этого нужно добавить в таблицу comment поле IP, куда будут записываться IP адреса комментаторов.
Далее перед тем как добавлять комментарий в базу, делаем простой SELECT (SELECT date FROM comment WHERE ip='".$_SERVER['REMOTE_ADDR']."' ORDER BY id DESC) и получаем последнюю дату с данным IP адресом. Далее высчитываем разницу между текущим и полученным временем в секундах: time()-strtotime("полученное из базы время"). В зависимости от того превышен интервал или нет, решаем добавлять комментарий в базу или нет.
Подробнее на нашем форуме по ссылке.
Ответить

Юрий
0
# 1057
(20:19:03  21.08.2013 г.)

Здравствуйте!
Поделитесь, пожалуйста, как Вы оформляете коды скриптов в текстах Ваших статей. Спасибо.
Ответить

Administrator
2
# 1058
(20:32:34  21.08.2013 г.)

При помощи PHP функции highlight_string.
Ответить

Евгений
0
# 1067
(23:09:34  27.08.2013 г.)

Здравствуйте! Все получилось с первого раза! Полезная и доходчивая статья. Долго искал. Единственное, чтобы в таблице mysql сообщение отображалось без крякозябров, необходимо после mysql_select_db
вставить строку mysql_set_charset('utf8');
Ответить

Владимир
2
# 1095
(18:14:05  03.09.2013 г.)

Здравствуйте. Все понравилось, все работает. Но есть два вопроса. Почему в БД за место нормальных комментариев, выводятся кракозябры, а на сайте все нормально. И второе, как можно осуществить кнопку "Ответить". Заранее спасибо.
Ответить

Administrator
0
# 1096
(21:01:37  03.09.2013 г.)

Для того чтобы не было кракозябров, смотрим сообщение # 1067.
По поводу кнопки "Ответить" - на форуме в теме Построение дерева комментариев уже рассматривали, как это делается.
Ответить

Евгений
0
# 2383
(19:01:11  11.04.2015 г.)

А есть готовый код для работы кнопки "Ответить", ибо шибко сложно не понятно конструировать по записям на форуме?
Ответить

Administrator
0
# 2384
(19:07:23  11.04.2015 г.)

На данный момент нет.
Ответить

Евгений
0
# 2389
(19:46:27  13.04.2015 г.)

Было бы не плохо, если бы появилась статья, описывающая Построение дерева комментариев и базу данных для работы кнопки оценки (сейчас она не работает). Форум читать сложно, много лишнего, составить код не получается.
Ответить

Administrator
0
# 2390
(20:17:01  13.04.2015 г.)

В планах имеется создание новой темы со всеми "примочками".
P.S. Добавление комментариев на сайт.
Ответить

Татьяна
0
# 1152
(22:02:53  25.09.2013 г.)

Здравствуйте! У меня проблемы с двумя последними формами -отправки и вывода комментария.
Так в форме вывода коммент. выводится:
Notice: Use of undefined constant comment_id - assumed 'comment_id' in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 321
Notice: Undefined index: comment_id in /home/httpd/vhosts/домен.ru/httpdocs/akvapark_akvapolis.html on line 321
Ответить

Administrator
0
# 1153
(22:57:31  25.09.2013 г.)

У Вас наверно включена функция error_reporting(); Выхода два:
1) Убираем функцию error_reporting(); если таковая имеется, либо выключаем протоколирование ошибок - error_reporting(0); (устанавливаем уровень сообщения об ошибках PHP).
2) Все имена переменных в квадратных скобках берем в двойные кавычки ($_POST['comment_id']).
Ответить

Татьяна
0
# 1154
(11:57:12  26.09.2013 г.)

Во всех PHP кодах поставила кавычки, теперь такое сообщение:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/httpd/vhosts/домен/httpdocs/akvapark_akvapolis.html on line 27
Вот сама строчка 27: header("Location: $_SESSION['mess_url']#last");
А логин, хост и пароль должны быть в кавычках?
Ответить

Administrator
-2
# 1158
(20:34:44  26.09.2013 г.)

Тут еще надо посмотреть, что находится перед данной строкой, т.к. вариантов возникновения такой ошибки может быть несколько.
Для начала удалите из строки header("Location: $_SESSION['mess_url']#last"); одинарные кавычки.
Да. И имя базы тоже должно быть в кавычках.
Дальнейшее общение по поводу Вашей проблемы перенес на форум в тему Проблема с формой добавления комментариев.
P.S. Вы можете продолжать писать в комментариях, при необходимости я их перенесу на форум.
Ответить

Костя
0
# 1198
(22:22:38  11.10.2013 г.)

У меня такая ошибка:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\p\www\pg.php on line 97
Помогите разобраться.
Ответить

Administrator
0
# 1199
(00:06:24  12.10.2013 г.)

Тут Вы либо неправильно подключились к БД, либо ошибка в запросе к ней.
Ответить

Костя
2
# 1200
(01:08:14  12.10.2013 г.)

Все по примеру сделал. А Вы можете кинуть мне демо?
Ответить

Administrator
0
# 1202
(13:35:12  12.10.2013 г.)

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

Сергей
0
# 1320
(02:08:04  08.12.2013 г.)

Это всё нужно проделать на каждой странице?
Ответить

Administrator
2
# 1321
(14:05:45  08.12.2013 г.)

Нет. Достаточно добавить данный код в один из файлов, который подгружается на всех страничках сайта (все зависит от Вашей CMS).
Ответить

Саша
-1
# 1616
(14:28:26  23.04.2014 г.)

У меня возникла проблемка.
Не правильно записывается страница в theme. Записывается просто post.php вместо post.php?id=№страницы.
Как это подправить?
Ответить

Administrator
3
# 1618
(19:36:42  23.04.2014 г.)

Самый простой способ, это вместо строк:
$_SESSION[full_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
$_SESSION[mess_url]=strtok($_SESSION[full_url], '?');
использовать $_SESSION[mess_url]=mysql_real_escape_string(basename($_SERVER['REQUEST_URI']));
Ответить

cupoma58
1
# 1886
(16:53:55  16.09.2014 г.)

{echo '<hr><div align="center" style="padding:3px; border-radius:5px;"><i><b>Последние комментарии посетителей:</b></i><br>';
Parse error: syntax error, unexpected T_STRING in .../comment/index.php on line 41 ???
Ответить

Administrator
0
# 1891
(22:32:01  16.09.2014 г.)

Обычно такая ошибка возникает при неправильном использовании кавычек, но в приведенной Вами строке все нормально, возможно ошибка где-то выше (ищите лишние кавычки).
P.S. Название домена из текста ошибки удалил, на форуме Ваш аккаунт активировал.
Ответить

cupoma58
0
# 1893
(12:55:22  18.09.2014 г.)

36\ $result = mysql_query("SELECT * FROM comment WHERE theme='".$_SESSION[mess_url]."'",$link);
37\ $number = mysql_num_rows($result);
-----------------------------------------------------------------------
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in... on line 36
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in... on line 37
Форма есть, но общаться с mysql не хочет.
Ответить

Administrator
0
# 1895
(20:42:27  18.09.2014 г.)

Скорее всего, Вы неправильно подключаетесь к MySQL.
$link = mysql_connect("localhost", "Ваш_логин", "Ваш_пароль");
mysql_select_db("Имя_базы", $link);
Дальнейшее обсуждение перенес на форум - http://usefulscript.ru/forum/showthread.php?tid=297
Ответить

Денис
0
# 1905
(22:18:36  24.09.2014 г.)

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

Administrator
2
# 1906
(23:37:56  24.09.2014 г.)

Куда угодно в промежутке между кодом обработки отправленных сообщений и кодом вывода комментариев.
Ответить

alx
1
# 2224
(16:41:49  27.01.2015 г.)

Разместил все на свое странице по инструкции, после нажатия кнопки отправить комментарий такая ошибка:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\mysite\mysite.php:3) in Z:\home\localhost\www\mysite\mysite.php on line 29

В строчке, в которой ошибка у меня: header("Location: $_SESSION[mess_url]#last");
Ответить

Administrator
0
# 2225
(20:06:19  27.01.2015 г.)

Проверьте, чтобы до нашего PHP кода с этой строчной не было никаких HTML тегов и вывода любой другой информации в окно браузера.
Ответить

alx
0
# 2226
(23:06:32  27.01.2015 г.)

Спасибо, за ответ. Разобрался сам. Из-за пустых строк и была ошибка. Если не против, еще вопрос, у меня не отображаются значки оценить комментарий - зеленые треугольники. В чем может быть дело?
Ответить

Administrator
1
# 2228
(23:13:41  27.01.2015 г.)

Скопируйте себе на сайт изображения и правильно укажите к ним путь (src="image/up.png" и т.д.).
Ответить

alx
1
# 2236
(17:53:01  29.01.2015 г.)

А как сделать так, чтобы отправлялось сообщение о новых комментариях, ожидающих модерации?
Ответить

Administrator
2
# 2237
(20:06:15  29.01.2015 г.)

Если Вы имели ввиду отправление сообщения на почту, то в PHP коде обработки комментариев после строчки: $_SESSION[comment_user_text]='';
добавьте функцию PHP - mail("Ваш почтовый ящик", "Заголовок сообщения", "Текст сообщения");
Ответить

Алексей
1
# 2326
(09:25:39  13.03.2015 г.)

Доброе время суток, имеется ошибка.
Если кликнуть по ссылке - "Хорошее сообщение" или "Плохое сообщение", появляется ошибка:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WebServers\home\site.ru\www\php\comment_db.php on line 4,
где строчка 4: $number = mysql_fetch_array($result);

На странице имеется эта ошибка и 1 появляется, но если обновлять вручную, она продолжает добавляться автоматически, например я обновил страницу 5 раз и появилась цифра 5, как будто я кликнул 5 раз по ссылке "Хорошее сообщение". Если уйти со страницы и зайти снова, ошибка исчезает, но цифра 5 остается и если кликнуть ссылке снова все повторится, как описано выше. В базу данных заносится все.
Просьба разъяснить, где кроется ошибка.
Заранее благодарен за ответ.
Ответить

Administrator
0
# 2329
(22:02:41  13.03.2015 г.)

Похоже на ошибку в MySQL запросе, предшествующем строчке $number = mysql_fetch_array($result);
Посмотрите, что у Вас в переменных $_POST[comment_id]) и $ip_short. Могу предположить, что отсутствует $ip_short.
Ответить

данила
1
# 3214
(17:06:32  14.05.2016 г.)

Помогите, выбивает ошибку (ниже), что самое интересное ошибка находится в самом вашем коде почему-то...
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:\home\recscompany\html\games\gamespage\game1.php on line 503
Ответить

Administrator
0
# 3216
(17:29:22  14.05.2016 г.)

Ошибка в SQL запросе, либо неправильное подключение к БД. Вторая ошибка (я ее удалил из Вашего комментария) вытекает из первой.
Ответить

данила
1
# 3219
(23:50:56  15.05.2016 г.)

Спасибо, оказалось проблема в неправильно заполненной таблице т.к. я смотрел изначально вашу статью "Добавление комментариев на сайт" там внешне таблицы похожи вот я и подумал, что исправлять ничего не надо :-) спасибо!
Статья отличная!
Ответить

андрей
-1
# 3266
(20:20:30  11.06.2016 г.)

А возможно сделать так чтоб id записывался в базу данных не как нового пользователя, а как зарегистрировавшегося (имеющегося в другой таблице)?

P.s. Какая именно строка в этом коде отвечает за запись id пользователя в бд?
Ответить

даниил
0
# 3340
(13:27:30  20.07.2016 г.)

А можно вместо "$_SESSION[mess_url]" записывать в таблицу не только имя одной страницы, но и полный путь к этой странице
Например: (записывает сейчас): index.php
А надо так: www.sait/stranica/index.php
Ответить

Administrator
0
# 3341
(20:51:17  20.07.2016 г.)

$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
Ответить

Игорь
0
# 3514
(16:52:12  17.10.2016 г.)

Подскажите, пожалуйста! Как на одной странице, где допустим пять или больше новостей, разместить к каждой новости свой комментарий.
Ответить

Administrator
0
# 3515
(19:20:13  17.10.2016 г.)

Советую Вам воспользоваться обновленным скриптом комментариев, где для привязки комментариев можно использовать не URL странички, а id конкретной странички (темы или новости).
Ответить

Павел
0
# 3550
(17:21:31  11.11.2016 г.)

Здравствуйте. Уже два дня пытаясь установить скрипт на хтмл страницу. Делаю все как в инструкции. У меня не работает! Устанавливаю сразу на хостинг. На странице отображается как обычный текст.
Ответить

Administrator
0
# 3551
(18:31:14  11.11.2016 г.)

Смените расширение файлов на PHP, либо включите обработку PHP в HTML файлах (добавьте в файл .htaccess строчку: AddHandler application/x-httpd-php htm html). Тогда внутри HTML файлов можно будет размещать PHP код.
Ответить

Павел
0
# 3554
(13:40:08  12.11.2016 г.)

Здравствуйте. Ваш совет помог. Переименовал страницу на пхп. Все установил по новой инструкции. Заработало после удаления строчки and moderation=1. Нигде не могу найти, как установить админ модерацию. Если можно дайте, пожалуйста, ссылку как пошагово установить админ панель для проверки модерации. Спасибо.
Ответить

Administrator
0
# 3555
(18:05:29  12.11.2016 г.)

Так в данной теме выше как раз имеется ссылка на этот случай: Форма модерации комментариев к темам.
Ответить

Алексей
-2
# 4478
(13:55:54  09.06.2019 г.)

Здравствуйте! У меня выходит "Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /.../c.php:4 Stack trace: #0 {main} thrown in /.../c.php on line 4" Скажите, пожалуйста, что с этим делать?
Ответить

sedax
0
# 4965
(22:42:42  14.02.2023 г.)

Можно перед session_start(); поставить значок @ У меня это всегда работало, а можно написать ///error_reporting();///
Ответить

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

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

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

Как Вы узнали о нашем сайте?