Комментарии на PHP, Ajax, mySQL

Author Автор: Роман Чернышов    Опубликовано: 10 февраля 2012

Представляю вашему вниманию скрипт комментарием на PHP с использованием Ajax, jQuery (отправка комментариев без перезагрузки страницы), для хранение комментариев используется база данных mySQL. Данный скрипт подойдет для большинства сайтов работающих на самописном движке или на любом другом: Joomla, WordPress и т.д.

Возможности скрипта:

  • Отправка комментарием без перезагрузки страницы, Ajax, jQuery
  • Встроенный WISIWIG редактор TinyMCE, с поддержкой смайликов QIP
  • Бесконечное число вложенных-комментариев (ответов)
  • Администрирование комментариев)
  • Простоя установка за 5 минут
  • Использование в качестве аватаров пользователей Gravatar (www.Gravatar.com)
  • Скрипт полностью бесплатный. (Но при этом желательно на любой странице своего сайта выразить свое спасибо в виде ссылки на автора www.rche.ru)

Установка скрипта

1. Создайте таблицы в БД импортировав в неё install.sql (лежит в архиве со скриптом)
2. Настройте подключение к БД в файле config.php
3. Вставьте на страницу где будут выводится комментарии, в самое её начало: (Внимание! иклуд должен быть в самом начале кода страницу, перед ним не должно ничего выводиться в браузер, это важно)

<?php include("config.php");

4. Вставьте в то место страницы где требуется выводить комментарии, следуюущий код:

<?php 
$comments->outComments(); 
?>

Для администрирования коммантариев добавте в URL адрес, переменнуй pass=12345 (пароль задается в config.php)
Примеры:

http://example.com/comments.php?pass=12345
http://example.com/components/articles/?pass=12345
http://example.com/?pass=12345

Настройки

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

Но в данном топике эту возможность я описывать не будут т.к. подключение к каждому движку будет иметь свои особенности.

Базовые настройки производятся в файле config.php

$AdminPass = '12345'; //Пароль администратора
 
	$settings = array(
	  'dbName' => 'db',
	  'dbUser' => '',
	  'dbPass' => '',
	  'dbHost' => 'localhost'
	 ); // Настройки БД

Обратите внимания на строку

$comments->gravatar=true; // включение GRAVATAR

По умолчанию включены аватарки от gravatar.com, для их отключения установите значение данной настройки в false.

Скачать English версию: Скачать


Укажите в комментарии к платежу, ваш емаил, на него придет ссылка на скачивание скрипта!

Надеюсь данный скрипт комментариев пригодиться вам и будет служить верой и правдой. По всем вопросам прошу отписываться в комментариях.

UPD1: Для работы с кодировкой Windows-1251, нужно открыть файлы class.comments.php, js/rcheComment.js в Notepad++ и сохранить их с кодировкой Windows-1251. Затем в файл comments.c.php, после 291 строчки(на момент скачивания вами скрипта эта строка может измениться — доработки и прочее, сами понимаете:)), в общем вставляем после
function saveComments() { $name = trim(strip_tags($_POST['nameComment'])); $email = trim($_POST['emailComment']); $text = PHP_slashes(htmlspecialchars(markhtml(trim(rawurldecode($_POST['textComment'])))));
), вставить этот код:

$name=iconv('UTF-8','Windows-1251',$name);
$text=iconv('UTF-8','Windows-1251',$text);

В файле class.dbsql.php в строке 129 заменить UTF8 на cp1251

А также таблицам в БД (`rche_comments`, `rche_users`) и их полям присвоить кодировку cp1251_general_ci

UPD2: Реализована система антиспам, антибот и капча с выводом изображения с проверочным кодом. Теперь кол-во спама будет сильно ограничено.

UPD3:
1. Если у вас не работает капча проверьте наличие PHP модуля GD. картинка капчи генерируется средствами PHP.
2. Если не работает UPD1(кодировка win1251) возможно модуль PHP — iconv не подключен, также проверьте.

Проверяем наличие PHP модулей командой phpinfo();

UPD4:
Отпишусь сразу всем, в последней сборке от 08.11.2012 исправлены следующие баги:
— отображение картинки капчи при ответе на комментарий
— ошибка при проверке капчи на ответ

Для самостоятельного устранения багов:
в файле /class.comments.php строка 131, измените строку на (подставив в ID букву R)
Было
<input type="text" name="capcha" id="Rcapcha" value="" class="inputComment"/><br/>

Стало
<input type="text" name="capcha" id="Rcapcha" value="" class="inputComment"/><br/>

Расшифровка возможных ошибок:
ERR1: Ошибка: Имя должно состоять более чем из 3 символов
ERR2: Ошибка: E-Mail указан неверно
ERR3: Ошибка: Отсутствует текст комментария
ERR4: Ошибка: Не удается установить тип комментария. Попробуйте позже
ERR5: Ошибка: Не верно указан проверочный код с картинки.

Проблемы с работой в кодировке Windows-1251:
При работе скрипта в данной кодировке не всегда правильно распознается введенный текст скриптом JavaScript, это может проявляться в некоторых браузерах. Желательно использовать кодировка UTF-8

Если не отображаются дефолтные-аватарки(картинки заглушки), то пути к картинкам-дефолтным аватркам при комменте нужно прописать абсолютные
строки 260, 324 в файле class.comments.php,
было
$img='images/boy48.gif';
стало
$img='http://example.com/comments/images/boy48.gif';

96 комментариев to “Комментарии на PHP, Ajax, mySQL”

  • Евгений 13.02.2012 в 11:34 дп

    Есть возможность настройки индивидуальных комментариев для разных страниц?

    • Роман Чернышов 13.02.2012 в 12:01 пп

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

  • Озик 06.03.2012 в 3:49 пп

    Вот у меня Ошибка выходит хотелось бы узнать почемУ??
    Вот она:
    Ошибка DB:

    Table ‘wordpress.rche_users’ doesn’t exist

    SELECT rche_comments.*, rche_users.photo, rche_users.username, rche_users.userID FROM rche_comments LEFT JOIN rche_users ON rche_comments.user =rche_users.userID WHERE rche_comments .url=’d4aafe19309f8ffa82698c3e7279bf88′ ORDER BY rche_comments.id ASC

    • Роман Чернышов 06.03.2012 в 4:14 пп

      Создайте еще таблицу (сразу не доложил в архив, поправил)

      — Структура таблицы `rche_users`

      CREATE TABLE IF NOT EXISTS `rche_users` (
      `userID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
      `username` varchar(50) NOT NULL DEFAULT »,
      `password` varchar(100) NOT NULL DEFAULT »,
      `email` varchar(150) NOT NULL DEFAULT »,
      `family` varchar(50) NOT NULL,
      `name` varchar(50) NOT NULL,
      `name_two` varchar(50) NOT NULL,
      `wm` varchar(15) NOT NULL,
      `photo` varchar(255) NOT NULL,
      `active` tinyint(1) NOT NULL DEFAULT ‘0’,
      `gid` int(11) NOT NULL,
      `date` varchar(20) NOT NULL,
      `rate` int(11) NOT NULL,
      `money` float NOT NULL,
      `desc` varchar(255) NOT NULL,
      `profile` text NOT NULL,
      `country` int(11) NOT NULL,
      `region` int(11) NOT NULL,
      `city` int(11) NOT NULL,
      `online` int(11) NOT NULL,
      `alertmail` int(11) NOT NULL,
      `alertlich` int(11) NOT NULL,
      PRIMARY KEY (`userID`),
      UNIQUE KEY `username` (`username`),
      UNIQUE KEY `email` (`email`),
      KEY `active` (`active`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3293 ;

  • Стас 07.03.2012 в 4:40 дп

    Вставку видео бы поддержать- былоб классно. Если не чисто кодом, то может через тег типа [youtube]
    а в настройках скрипта задавать шаблон вывода- на случай смены ютубовского кода для встраивания..

  • Стас 07.03.2012 в 4:43 дп

    И еще можно добавить оценку камента юзерами (типа понравился-нет) — потом можно будет выводить типа самые оцененные каменты или чтото в этом роде..

    И еще поддержать загрузку картинок юзерами. А то щас картинки можно встраивать в камент тока с других страниц, а свою юзер загрузить не сможет.

  • Стас 07.03.2012 в 4:44 дп

    Есть ли вероятность, что уважаемый автор реализует вышеприведенные доработки?
    🙂

    • Роман Чернышов 07.03.2012 в 11:29 дп

      Вероятность конечно есть, но на сколько в обозримом будущем сказать очень сложно. (Завалы катастрофические)

  • Стас 07.03.2012 в 11:41 пп

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

    На всякий случай, если Вы, Роман, соберетесь закодить это дело, вот микро тз:
    1. аутентификация через соцсети с поддержкой репоста камента на стены ВК или ФБ;
    2. поддержка загрузки картинок;
    3. поддержка вставки видео с ютуба и вимео с возможностью менять в настройках скелет вывода на случай смены формата ютубом;
    4. рейтингование каментов юзерами;

    Если это все будет- думаю многие бы заплатили бы. Я- точно.
    Буду ждать, как Вы разгребете завалы)

    • Роман 08.03.2012 в 1:19 дп

      Ок, Беру на заметку. Спасибо за ТЗ!

  • Озик 08.03.2012 в 2:20 пп

    Роман вот новая ошибочка:)) Warning: Cannot modify header information — headers already sent by (output started at W:\html\test\www\comments\index.php:6) in W:\html\test\www\comments\comments.c.php on line 331
    что тута посмотрел в коде не понял ошибки!!!

  • Озик 08.03.2012 в 2:36 пп

    Это происходит при комментирование после обнавлении страрницы эта ошибка уходит!!! кстати если не обнавить страницу новый комментарий не напишшешь!

    • Озик 08.03.2012 в 3:44 пп

      кстати найден баг при подключении даного скрипта в wordpress написании коментария и обновления страницы сообщение еще раз добавляеться!!!!

  • Александр 30.03.2012 в 12:10 дп

    Большое вам человеческое спасибо)))))5 дней ищу в винтернете нормальный скрипт комментов))))Спасибо))))

  • Александр 30.03.2012 в 12:34 дп

    помогите пожалуйста(сделал все как вы пишите в инструкции но проблема с базами данных на странице http://my-muzhiki.ru/statie/hochu_zarabotat_deneg.php выдает ошибку Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘user4578_1’@’localhost’ (using password: YES) in /home/user4578/my-muzhiki.ru/www/comments/dbsql.class.php on line 123
    Can’t connect to DB. Server. localhost, user: user4578_1

    • Роман Чернышов 30.03.2012 в 12:48 дп

      Ошибка «Access denied for user» — проверьте правильно ли указан логин для доступа к БД.

      • Александр 30.03.2012 в 9:02 пп

        подлючился к базам данных теперь такая ошибка ERR3
        но пред этим вышла форма комментов с закорючками,я написал пробный комммент нажал отправить и она исчезла теперь ERR3 стоит и все(((помогите пожалуйста((

        • Роман Чернышов 30.03.2012 в 9:38 пп

          с закарючками — это проблема в кодировки, скрипт использует кодировку utf8, а ваш сайт работает с кодировкой windows-1251. Нужно пересохранить файлы скрипта в кодировке windows-1251, это можно сделать с помощью программы Notepad++ (открываете файл, и жмете сохранить, при сохранении выбираете нужную кодироку)

          ERR3 — скрипт не получает текст сообщения, проверьте наличие подключенного jQuery.

          Если разобрать не сможете, пишите в обратную форму, можете предоставить доступ по ftp, я проверю и постараюсь помочь с настройкой.

  • Александр 30.03.2012 в 10:04 пп

    я выслал в форму обратки доступ спасибо вам большое)а то я уж незнаю что и делать с этими комментами для сайта весь инет перерыл,вашу отличную статью нашел и один фиг не получается((я не учился не где web програмированию самоучка,сайт сам сделал полностью,а как коменты сделать не могу и все как проклятье какое то

  • Александр 31.03.2012 в 7:32 пп

    Спасибо))за настройку скрипа отлично работает на мой взгляд лучший скрипт комментов для сайта)

  • Оксана 03.04.2012 в 5:17 пп

    Объясните толково как попасть в админку.

  • Оксана 04.04.2012 в 3:33 дп

    Спасибо. Подскажите в каком файле можно отредактировать внешний вид(шаблон) окно редактора tiny_mce ?

    • Роман Чернышов 04.04.2012 в 11:55 дп

      Настройка кнопок в редакторе осуществляется в файле js/rcheComment.js, строки 23 и 24 — для основного окна комментариев и строка 93 для окна комментариев ответов.

      Пример строки:
      theme_advanced_buttons1 : «cut,copy,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,emotions,image»,

      Файл со стилями CSS, находится здесь:
      css/content.css

      Как настраивать его, хорошо описано в статье
      http://webhamster.ru/site/page/index/articles/comp/15

      • Оксана 04.04.2012 в 2:35 пп

        Спасибо

        • Оксана 04.04.2012 в 2:46 пп

          А как можно настроить контекстное меню при клике правой кнопкой мыши в основном окне комментариев?

          • Роман 05.04.2012 в 12:07 пп

            На этот вопрос к сожалению ответить вам не смогу.

  • Влад 12.08.2012 в 6:09 пп

    А где хранится путь до картинки капчи?

    У меня картинка не появляется!!!

    У просто все файлы комментов лежат в отдельной папке comments !!!

    • Роман Чернышов 13.08.2012 в 12:04 дп

      В файле class.comments.php, 132 строка, там есть метод $this->path[‘capcha’], собственно и есть вставка пути к картинке, но! картинка при этом генерится PHP скриптом, а именно capcha.php и class.captcha.php, если картинка не отображается возможно ошибка выполнения данного скрипта. Ошибка может быть связана с отсутвием на хостинге включенного модуля PHP: imagick.so или gd.so (чесно уже не помню есть ли там реализованная поддержка переключений между ними). В общем выполните команду phpinfo(); и убедитесь что imagick и GD = enable

  • Роман Чернышов 24.08.2012 в 1:17 пп

    Исправлен баг с отображением картинки сapcha.

  • Егор 09.09.2012 в 4:52 пп

    а какие файлы нужно обновить, чтоб капча отображалась?

    • Егор 13.09.2012 в 1:12 дп

      может я что то не так делаю, но капча все равно не отображается, даже после замены comments.php
      в чем может быть проблема??

      • Роман Чернышов 06.11.2012 в 2:43 пп

        Капча может не отображаться из-за отсутвия модулей php — imagick и gd, картинка т.к. генерируется средствами PHP. Проверьте их наличие

      • Иван 29.10.2013 в 4:37 пп

        Не подскажите-как сделать что бы данные о пользователях он брал из имеющийся таблицы зарегистрированных пользователей?
        [spoiler] CREATE TABLE `USERS` (
        `id` int(10) NOT NULL auto_increment,
        `username` varchar(50) NOT NULL,
        `fullname` varchar(75) NOT NULL,
        `password` varchar(50) NOT NULL,
        `email` varchar(75) NOT NULL,
        `active` tinyint(1) NOT NULL,
        `code` varchar(75),
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB AUTO_INCREMENT=1; [/spoiler]
        Заранее спасибо за ответ.

        • Роман Чернышов 29.10.2013 в 7:11 пп

          Нужно передать массив с данными пользователя в преременную $comments->user=array();

          • Иван 29.10.2013 в 9:18 пп

            Спасибо.
            Извиняюсь за тупой вопрос, но… где этот массив находится-в таблице, или в каком то файле?)
            PS. Я пробовал делать как писал пользователь «денискаааа» несколькими постами выше, но у меня та же ошибка, что и у него.
            Не могли бы вы привести небольшой пример-как это должно выглядеть?

  • Максим 08.10.2012 в 2:24 пп

    Как у вас в демо-примере, так и в самом скрипте не работает капча на ответ, когда отвечаешь на коммент, воодишь капчу, скрипт пишет не правильно введенно и не пускает!

    • Роман Чернышов 08.11.2012 в 12:12 пп

      Исправлено! Был баг в в JS скрипте. Качайте последнюю сборку, все по той же ссылке.

  • bb 09.10.2012 в 10:11 дп

    Комментарии второго уровня не работают.
    1. Сначала исправил ошибку в пути капчи.
    Она стала выводиться, но все равно правильно не определяется.
    2. Комментарии второго уровня при обновлении страницы — не показываются.

  • bb 10.10.2012 в 10:55 дп

    class.comments.php строка 132
    заменить $this->path[‘capcha’] на $this->paths[‘capcha’]
    Капча начнет выводиться, но для ответа на коммент — будет все равно определяться неправильно.
    Еще есть проблема в отображении ответов на комменты. После обновления страница — они не выводятся.

  • Дмитрий 15.10.2012 в 5:33 пп

    Как организовать запись комментов в файл, а не в бд Mysql?

    • Роман Чернышов 08.11.2012 в 12:14 пп

      Переписать все запросы к БД на запросы к файлу, в class.comments.php

  • Azat 22.10.2012 в 12:49 пп

    у меня тоже такая проблема картинка не появляется. И самое главное скрипт работает если только страницу поместить в папку с файлами скрипта, в другой категории он уже не работает. Так все отлично никаких проблем я думаю что в адресации все дело да? пожалуйста ответьте мне это очень важно.

  • Сергей 22.10.2012 в 4:05 пп

    Форма выводится но без стилей + когда нажимаеш отправить перебрасывает на страницу с текстом ERR5

  • Иван 08.11.2012 в 8:13 дп

    Здравствуйте Роман! Скрипт и вправду просто чудо. Я уже три дня ищу нормальный скрипт. Везде то не доделанные, то файлов не хватает, то еще что нибудь. Как я уже сказал скрипт прекрасный, НО есть одна проблема: Это касается ввода данных на русском языке, т.е. комментарий не добавляется, либо ошибка ERR1 либо ERR3 я так понял это связано с полями ввода имени и текста сообщения. А теперь самое интересное: если вводить русские слова английскими буквами то всё работает без проблем, ну и разумеется чисто английскими словами, а вот если хотя бы одно слово на русском то ошибка. В ЧЕМ ДЕЛО?

  • Роман Чернышов 08.11.2012 в 12:24 пп

    Отпишусь сразу всем, в последней сборке от 08.11.2012 исправлены следующие баги:
    — отображение картинки капчи при ответе на комментарий
    — ошибка при проверке капчи на ответ

    Для самостоятельного устранения багов:

    в файле /class.comments.php строка 131, измените строку на (подставив в ID букву R)
    Было
    <input type="text" name="capcha" id="Rcapcha" value="" class="inputComment"/><br/>

    Стало
    <input type="text" name="capcha" id="Rcapcha" value="" class="inputComment"/><br/>

    Расшифровка возможных ошибок:
    ERR1: Ошибка: Имя должно состоять более чем из 3 символов
    ERR2: Ошибка: E-Mail указан неверно
    ERR3: Ошибка: Отсутствует текст комментария
    ERR4: Ошибка: Не удается установить тип комментария. Попробуйте позже
    ERR5: Ошибка: Не верно указан проверочный код с картинки.

    Проблемы с работой в кодировке Windows-1251:
    При работе скрипта в данной кодировке не всегда правильно распознается введенный текст скриптом JavaScript, это может проявляться в некоторых браузерах. Желательно использовать кодировка UTF-8

    • Иван 08.11.2012 в 1:54 пп

      Да скрипт хорош, жаль конечно бросать его, но а что делать , не переписывать же весь сайт под кодировку UTF-8. К тому же почему то не отображается картинка при вставке скрипта

      outComments();
      ?>
      на страницу где нужны комментарии, просто надпись «картинка».

      И кстати файл comments.c.php, вообще отсутствует, не то что изменения в нем провести. В общем ладно, я хотел уже денежную благодарность вам дать, но видно не судьба. Всё равно Спасибо!

      • Роман Чернышов 08.11.2012 в 2:24 пп

        В последних комментариях я расписал возможные проблемы с отображением
        картинки.

        Проверяйте наличие PHP модулей GD, Imagick. Пропишите полный путь к
        капче в конфиге. Также замечу, что в основном у всем пользователей
        которые перевили скрипт в кодировку Win2151 он работает нормально
        (отказ в работе редкое явление и по больше степени устранимое).

        Файл comments.c.php переименован в class.comments.php. Вносить в тему
        и в комментарии информацию о всех изменениях очень сложно.

        За мотивацию словами о возможно благодарности, спасибо конечно!))

        • Иван 08.11.2012 в 3:21 пп

          На счет class.comments.php я понял сразу просто перестраховался на всякий случай и поэтому спросил, не корректно конечно, но как получилось. А на счет: Вносить в тему
          и в комментарии информацию о всех изменениях очень сложно — это я понимаю. Просто очень мало людей, которые вот так отзывчиво и терпеливо реагируют, а не посылают. У Вас Роман большое будущее. За всё спасибо. Попробую ещё по-копаться. Жалко такой скрипт бросать. Тем более что с английским работает, да и с русским работает только если не менять кодировки файлов, а просто после ввода комментария, в меню «вид» браузера поменять кодировку и вместо кирибезяк появляется нормальный коммент. Да дело 100% в кодировке, вот только где. Удачи и извините за назойливость.

  • Влад 15.11.2012 в 12:08 дп

    Доброго времени суток. Отличный скрипт. Огромное человеческое спасибо автору!!!
    Разрешите уточнить один вопрос: в Вашем коде указанно, что для удаления комментариев необходимо к адресу страницы сайта добавить ?pass=12345. Вопрос в следующем, как быть когда адрес страницы на которой размещен комментарий имеет такой вид, к примеру: http://site.com/page.html?id=1 ?

  • Михаил 15.11.2012 в 1:02 дп

    Полезная статья.
    А что если адресом страницы будет выступать адрес такого вида: example.com/comments.php?id=1. Как тогда в этом случае записать ?pass=12345 для редактирования комментария?

    • Роман Чернышов 15.11.2012 в 1:39 дп

      В этом случае просто добавляем переменную
      example.com/comments.php?id=1&pass=12345

      • Михаил 15.11.2012 в 1:59 дп

        Спасибо за ответ.
        я так и делаю но к сожалению удалить комментарий не получается 🙁

  • Андрей Бойков 27.11.2012 в 8:40 пп

    При использовании кода

    получаю следующее сообщение:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter — headers already sent (output started at /home/u40264/petrohelpru/www/obrashenie.html:5) in /home/u40264/petrohelpru/www/comments/config.php on line 39

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

    Warning: Cannot modify header information — headers already sent by (output started at /home/u40264/petrohelpru/www/obrashenie.html:5) in /home/u40264/petrohelpru/www/comments/class.comments.php on line 354

    В php слаб. Можете помочь понять причину?

    • Роман Чернышов 28.11.2012 в 12:20 дп

      Проблема в том, что скрипт выдает в браузер лишние символы перед тем как выдать заголовок header();
      1. отключите вывод ошибок, команда error_reporting(0);
      2. проверьте нет ли в скриптах пустых строк или пробелов перед

      • Андрей Бойков 28.11.2012 в 1:22 дп

        В ASCII от вышеперечисленных сообщений удалось избавиться только помещением инклуда самой первой строкой (ДО DOCUMENT)! Но дальше началисьпроблемы с вводом коммета — сообщения ERR!
        ПЛЮНУЛ И ПЕРЕВЕЛ ВЕСЬ СВОЙ САЙТ НА utf-КОДИРОВКУ.
        Все страницы сайта в notepad++ перевел в кодировку UTF (подчеркиваю — с BOM). Снова начались проблемы с warning’ами. Они разрешаются переводом файлов в кодировку UTF без BOM.
        Но теперь пропала капча, т.к. ваши конструкция с this->path и this->paths выдают неверный адрес файла capcha.php.
        Как теперь увидеть капчу?
        И в какой кодировке должны быть всефайлы вашего скрипта? (C BOM или без)?

        • Роман Чернышов 28.11.2012 в 1:25 дп

          1. Заменить this->path на this->paths (в посл версии все исправлено)
          2. Без BOM (это относится ко всем скриптам, не только к моим)

          • Андрей Бойков 28.11.2012 в 3:12 дп

            Капча стала показываться только после замены в конфиге строки
            $paths[‘capcha’] = ‘/comments/capcha.php’; // вариант: /comments/capcha.php

            Что, впрочем, очевидно. Тут я сам дурак.
            Но дадьше идет ERR5 — капча не проходит.

            Все файлы вашего скрипта сделаны без BOM. Все скрипты на сайте тоже.
            Ничего не понимаю!

  • Артур 09.01.2013 в 1:31 дп

    Роман, помогите пожалуйста, браузер выдает такие ошибки:

    Warning: session_start() [function.session-start]: Cannot send session cookie — headers already sent by (output started at /home/amway39/public_html/index.php:1) in /home/amway39/public_html/comments/config.php on line 40

    Warning: session_start() [function.session-start]: Cannot send session cache limiter — headers already sent (output started at /home/amway39/public_html/index.php:1) in /home/amway39/public_html/comments/config.php on line 40

    • Роман Чернышов 09.01.2013 в 11:03 дп

      Ошибка говорит о том, что перед вызовом команды session_start() в браузер выводятся какие-то символы, чего быть не должно. Возможно вы подключили скрипт-конфиг коментариев в середине документа-страницы. Конфиг нужно подключать в самом начале всех скриптов, в вашем случае в index.php.

      Теория, вкратце, такова: Идентификатор сессии в данном случае пишется в файлы cookie.
      cookie, в свою очередь, всегда устанавливаются через отправку заголовков — headers.
      У вас же пишет, что заголовки УЖЕ были отправлены. И, как я понял, отправил их никто иной как файл index.php — первой строкой

      Начало файла index.php должно быть такое:
      Код:

      Пробел или пустая строка (как и все другие символы) перед

  • Роман 21.01.2013 в 3:04 пп

    Внесен ряд мелки багфиксов в скрипт комментариев.

  • Игорь 19.08.2013 в 3:32 дп

    К меня все отлично работает на денвере, но на хостинге инклуд подключения вывода комментариев не подключает форму и тупо после него не выводится ниго вообще , почему такое получается?

    • Роман Чернышов 22.10.2013 в 1:27 пп

      Нужно конкретно смотреть и изучать, что и как вы подключаете. Ответ дать не могу.

  • Василий 22.08.2013 в 6:48 пп

    как изменить метод сортировки, чтоб новые комментарии были вверху?

    • Роман Чернышов 23.08.2013 в 1:28 дп

      class.comments.php, 194 строка: ASC меняем на DESC

      • Василий 25.08.2013 в 10:52 дп

        Спасибо метод сортировки поменялся. Подскажите как сделать, чтоб форма «Оставить свой комментарий» была вверху, а не после всех отзывов? и есть ли возможность оставлять оценку магазину?

        • Василий 26.08.2013 в 7:48 пп

          Нельзя форму написания комментариев поднять вверх вместе с сортировкой????

      • DAN 17.12.2013 в 4:11 пп

        Роман, если в class.comments.php, в 194 строке ASC меняем на DESC, то действительно последние комментарии (после обновления страницы) располагаются вверху, но при этом перестают выводиться ответы к комментариям. Не подскажете как быть ?

  • Dan 27.08.2013 в 4:25 пп

    Роман, все работает норм только если страница расположена в той же папке что и файлы скриптов , при попытке же подключить комментарии на страницах расположенных в других директориях нормальной работы не наблюдается. Как выйти из этого положения ? Заранее спасибо.

    • Роман Чернышов 22.10.2013 в 1:26 пп

      Возможно нужно прописать абсолютные пути к JS и CSS, вместо относительных.
      Пример как было:


      Как стало


  • Андрей 26.09.2013 в 4:58 пп

    Большое спасибо за плагин! Пользуемся с радостью!

  • Dan 03.10.2013 в 3:53 пп

    Отличный скрипт, толково написан, спасибо автору. Если у вас вместо сообщений об ошибке вылазят коды типа ERR1 и так далее, в файл rcheComment.js перед строкой

    if(html != ‘ERR1’ && html != ‘ERR2’ && html != ‘ERR3’ && html != ‘ERR4’ && html != ‘ERR5’) {

    добавьте строчку

    html = html.trim();

    • Роман Чернышов 22.10.2013 в 1:24 пп

      Готово, спасибо!

  • Евгений 09.10.2013 в 2:06 пп

    У меня страницы с параметрами.. если я добавляю еще параметр админ.. то пропадают комментарии… так как они привязаны к определенным страницам… как быть тогда?

  • Deniskaa 22.10.2013 в 12:55 пп

    как привязать к регистрации, чтобы не нужно было вводить имя и email, а сообщения отправлялись от зарегистрированного пользователя?

    • Роман Чернышов 22.10.2013 в 1:19 пп

      В конфиге нужно указать, $comments->login=true; (строка 44)

      И передать в преременную $comments->user=array(); массив с данными пользователя
      $user[‘password’]
      $user[‘userID’]
      $user[‘photo’]
      $user[‘username’]

      • денискаааа 24.10.2013 в 10:07 пп

        При своей регистрации вставляю данные в таблицу rche_users логин и пароль.
        В конфиге $comments->login=true;
        $comments->user=array($user[‘password’], $user[‘userID’], $user[‘username’]);
        На странице там где комментарии в форме пропали поле имя и email, но при добавлении комментария выскакивает ошибка : Ошибка: Не удается установить тип комментария. Попробуйте позже. В чём может быть проблема?

  • денискаааа 22.10.2013 в 12:56 пп

    Есть возможность оставлять коменты только зарегистрированным пользователям?

  • Dan 17.01.2014 в 10:50 дп

    Для сортировки от нового к старому достаточно перед $this->tree_print($sortcomm); добавить krsort($sortcomm); в файле class.comments.php, а вот перенсти форму на верх оказалось чуть сложнее, там нужно не только перетащить echo $this->formComment(); но и изменить порядок div-ов и кучу всего изменить в echo rcheComments.js

  • Владимир 04.02.2014 в 2:14 пп

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

  • Владимир 04.02.2014 в 2:45 пп

    У вас ошибка в коде
    class.captcha.php
    надо
    $ifunc( $this -> image, NULL, $this->imagetype[1]);
    NULL ,а не пустую строку, иначе будет ошибка.
    А так комменты хорошие

  • Елена 19.02.2014 в 7:28 пп

    Возможно ли адаптировать этот скрипт под Ucoz для модуля «Редактор страниц» при покупке пакета PHP?

    • Роман Чернышов 26.02.2014 в 1:16 дп

      Теоретически возможно, но на практике мною не проверялось.

  • Андрей 04.04.2015 в 8:00 пп

    Добрый вечер! Столкнулся с такой проблемой, что обрезаются длинные комментарии. Длина более 1 816 символов. Куда копать? Это ограничение базы данных или ограничение скрипта?

  • Валерий 06.10.2016 в 10:47 пп

    Здравствуйте!
    Я создал таблицы в существующей БД сайта, импортировав в неё install.sql. У меня уже существует файл database.php. В нём прописано подключение к БД. Что теперь делать с Вашим файлом config.php?
    У меня уже существует файл index.php. Что делать с Вашим файлом index.php? Я их пробовал объединить в один, но произошел конфликт стилей. Стили на главной странице стали Вашими.
    Пожалуйста, помогите советом, или дайте направление действий!

    • Роман Чернышов 07.10.2016 в 12:46 пп

      Добрый день! Скрипт нужно залить в отдельную папку, что-бы файлы не пересекались.

      • Валерий 08.10.2016 в 11:26 дп

        Роман, спасибо за ответ! С этим я уже разобрался. Получилось все без создания папки. Залил все в корень с переносом файлов в мои существующие папки.
        Теперь другая проблема! Уже сутки не могу решить. Не отображается капча. У меня установлен Open Server PREMIUM. В файле info.php есть модули GD, imagick. PHP Version 5.4.45.
        Также не понимаю, почему на Вашей demo-странице комментов http://rche.ru/examples/comments/index.php эта капча также не отображается. Поэтому протестировать ее на demo-странице я не могу.

  • Роман Чернышов 14.05.2017 в 9:20 пп

    Для работы капчи на PHP 5.6, замените в файле class.captcha.php строку 264
    $ifunc( $this -> image, «», $this->imagetype[1] );
    на
    $ifunc( $this -> image, NULL, $this->imagetype[1] );

    • Ден 15.05.2017 в 7:53 дп

      спасибо Роман — все заработало, теперь только не могу понять что не так когда кидаю файлы в отдельную папку….
      …пути меняю:

      require_once(‘class.registry.php’);
      require_once(‘class.dbsql.php’);
      require_once(‘class.controller.php’);
      require_once(‘class.comments.php’);
      require_once(‘functions.php’);
      require_once(‘markhtml.php’);

      на
      require_once(‘../comments/class.registry.php’);
      require_once(‘../comments/class.dbsql.php’);
      require_once(‘../comments/class.controller.php’);
      require_once(‘../comments/class.comments.php’);
      require_once(‘../comments/functions.php’);
      require_once(‘../comments/markhtml.php’);

  • Валерий 08.08.2017 в 4:26 пп

    Как сделать код валидным для HTML5? Высыпало кучу ошибок по поводу атрибутов элемента table. Они устарели. Как изменить стили для таблицы? Они генерируются JS? В каком файле?

  • Анатолий 22.10.2017 в 11:37 дп

    Здравствуйте!
    Помогите пожалуйста, получаю вот такую ошибку после заполнения полей Имя, электронная почта, Текст комментария и капчи:
    Ошибка DB:

    Incorrect integer value: » for column ‘user’ at row 1

    INSERT INTO rche_comments (`reply`,`user`,`name`,`email`,`comment`,`date`,`url`,`pass`,`urlOpen`) VALUE (‘0′,»,’dfgdfg’,’fdgdfg@dfsf.sfd’,’dsfsdf ‘,’1508661297′,’6666cd76f96956469e7be39d750cc7d9′,’SMavVeau’,’/’)

    • Роман Чернышов 22.10.2017 в 12:50 пп

      Внес изменения в скрипт, можете скачать последнюю версию или внести правки самостоятельно. Файл class.comments.php строка 350.
      Заменить код
      VALUE (‘$replyComment’,'{$this->user[‘userID’])’},’$name’,’$email’,’$text’,’$time’,’$post_url’,’$pass’,’$urlOpen’)»;
      на
      VALUE (‘$replyComment’,».intval($this->user[‘userID’]).»,’$name’,’$email’,’$text’,’$time’,’$post_url’,’$pass’,’$urlOpen’)»;

  • Алексей 18.01.2018 в 11:38 пп

    Жалко нет регистрации и админки! хотел бы установить систему на под домен, и регистрация профиль авторизация все на под домене было , а комментарии на своем домене!

  • Марго 01.02.2018 в 10:43 дп

    Спасибо большое, то что я искала)

  • Павел 05.05.2021 в 12:22 пп

    Здравствуйте. Сколько будет стоить настройка и установка комментирования хотя бы на несколько страниц. Я самоучка , но тут пока не хватает ума. Спасибо.

Оставить комментарий на Алексей

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 159₽
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка