Комментарии на 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
Заказать работу
предложить оффер

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

Archive

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