Ответить на тему  [ Сообщений: 82 ] 
На страницу 1, 2, 3, 4, 5 ... 9  След.
Как добавить возможность комментариев на html сайт? 
Автор Сообщение
Администратор
Аватар пользователя

Зарегистрирован: 20 фев 2009, 01:38
Сообщений: 3159
Пол: мужской
Репутация: 3514
Добавить пункт репутацииВычесть пункт репутации
Сообщение Как добавить возможность комментариев на html сайт?
НЕ знаю почему, но данный вопрос очень популярен среди новичков!

ПРедполагаю, что это связано с тем, что обычно начинают с HTML и некоторые умудряются делать большие сайты, и успевают их раскрутить в ПС.

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

Короче, предлагаю решить вопрос УСТАНОВКИ КОММЕНТАРИЕВ НА HTML сайт. Я совсем недавно этим занимался. Ставил комменты на один из своих первых html сайтов - под названием самое интересное :)
Сразу скажу, что для конкретного решения, используется база данных, т.е на хостинге она должна быть.


ДОбавил комменты только на страницы третьего уровня. Можете посмотреть :) Делал сам на php.

Суть: На каждой странице мы располагаем форму для добавления комментариев, при отправке данные из формы летят в обработчик, который записывает их в базу данных. Также, перед формой для добавления комментариев, мы выводим все комментарии из базы данных, которые относятся к конктетной странице.

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


Теперь еще раз, только детальнее.
1. Во первых, раз у нас html сайт и мы хотим втулить туда php-скрипты , нужно сделать, чтобы они исполнялись. Для этого читаем внимательно урок по теме
2. После этого думаем, к чему можно привязаться, т.е. комментарий связать с конкретной страницей. Я лично,решил привязываться к УРЛ страницы. Ведь урл каждой страницы уникален.
Получить URl текущей старницы можно через функцию
Код:
$put = $_SERVER['PHP_SELF']; // получаем адрес текущей страницы

В данном случае, В переменной $put будет лежать адрес.
3. Создаем новую базу данных, например с именем baza . В данной базе создаем таблицу для комментариев с пятью полями:
$id - униальный инедтификатор,заполняется автоматически
$url - урл страницы, к которой оставляется коммент
$author - Автор комментария
$data - Дата комментария
$text - текст комментария

4. Что дальше? Какова идеология? А получается вот что. НА каждой странице, у нас есть форма добавления комментариев, с двумя полями: Автор и Текст Комментария. ТАкже присутствует кнопка ОТПРАВИТЬ, которая отправляет форму. ТАкже присутствует поле защиты от спама. Я решил сделать его в виде чекбокса. ТАкже в этой форме есть скрытое поле, которое отправляет урл текущей страницы.
Код:
<p>Добавить комментарий:</p>
              <form action='http://sait.ru/add_comments.php' method='post'>
              <p> Имя: <br>
              <input name='author' type='text' size='20' maxlength='20'></p>
              <p> Комментарий:<br> <textarea name='text' cols='40' rows='5'></textarea></p>
              <p><input name='ch' type='checkbox' value='yes'>
              Я не робот!</p>
             
             <input name='put' type='hidden' value='<?php echo $put ?>'>
              <p><input name='sub_com' type='submit' value='Добавить'></p>
             
              </form>


Обратите внимание, что в поле обработчика формы(action) я написал абсолютный адрес, с учетом того, что sait.ru - это Ваш домен, обработчик называется add_comments.php и лежит в корне сайта. ЭТо связано с тем, что страницы могут лежать в папках и подпапках, т.е. делаем так, чтобы с любой страницы данные могли попасть в обработчик.

Код:
value='<?php echo $put ?>
- в скрытом поле мы передаем адрес страницы, к которой оставляем коммент, чтобы потом записать его в базу.

5. С формой надеюсь примерно понятно. Теперь переходим к обработчику. Что он должен делать? Он должен принять данные из формы, и записать в базу данных.
Первый этап:принимаем и обрабатываем поля специальными функциями.
Код:
<?php

if (isset($_POST['author']))
{
$author = $_POST['author'];
}
if (isset($_POST['ch']))
{
$ch = $_POST['ch'];
}
if (isset($_POST['put']))
{
$put = $_POST['put'];
}
if (isset($_POST['text']))
{$text = $_POST['text'];
}

if (isset($_POST['sub_com']))
{
$sub_com = $_POST['sub_com'];
}

if (isset($sub_com))
{
if (isset($author))
{
trim($author);
}
else {$author ="";}
if (isset($text))
{
trim($text);
}
else {$text ="";}

if (empty($author) or empty($text))
{
exit("<p> Вы ввели не всю информацию, вернитесь назад и введите все поля</p><br><input name='back' type='button' value='Вернуться' onclick= 'javascript:history.back()'>");
}

$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);


Дальше можно еще сделать проверку на длинные слова, особенно если сайт у Вас фиксированной ширины,т.е. его можно будет убить с помощью таких комментов :)

Код:
$text = preg_replace("/[ ]+/", " ", $text);//убираем лишние пробелы если есть
$drop=explode(" ", $text);//разбиваем сообщение в массив по  строкам

for ($i = 0; $i < count($drop); $i++) {
   $tmp = $drop[$i];
   $strlen = strlen($tmp);
   
   if ($strlen > 30) {
   exit("<p> Слишком длинное слово!</p><br><input name='back' type='button' value='Вернуться' onclick= 'javascript:history.back()'> ");
}
}


НУ и наконец если человек прошел проверку на смапера, тогда пишем его комментарий в базу, иначе - выводим ему сообщение. ТАкже автоматом формируем поле дата.
Код:
if ($ch=="yes")
{
$date = date("d-m-Y");
$result2 = mysql_query("INSERT comments (url,author,text,date) VALUES ('$put','$author','$text','$date')",$db);
}
else { exit("<p> Поставьте галочку в соответствующей графе! Докажите что Вы не робот!</p><br><input name='back' type='button' value='Вернуться' onclick = 'javascript: self.back();'> ");
}
echo "<html><head><meta http-equiv='Refresh' content='0; URL=$put'></head></html>";
exit();
}



Естественно в самом начале файла нужно еще установить соединение с Базой данных
Код:
<? $db = mysql_connect("localhost","имя пользователя,"пароль");
mysql_select_db("имя базы",$db);
?>


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

Код:
$result3 = mysql_query("SELECT * FROM comments WHERE url='$put' order by id",$db);
           
if (mysql_num_rows($result3)>0)      
{
$myrow3 = mysql_fetch_array($result3);
do
{
printf("<div class='comments'>
              <div class='avtordate'> %s %s</div>
              <div class='telo'>%s</div>
              </div>",$myrow3["author"], $myrow3["date"], $myrow3["text"]);
}

while ($myrow3 = mysql_fetch_array($result3));
}   


Конечно формат вывода Вы можете подкорреткировать под себя.

КОроче говоря, любому человеку,который знаком с PHP сделать такое будет довольно просто. Главная идея - это привязка к пути страницы. Вот и все. :)

_________________
Лучший хостинг по соотношению цена/качество! Бесплатный тестовый доступ 10 дней

Любой сайт обязан приносить прибыль! узнай как! видео-инструкция по работе прилагается!

Здесь раскрутить сайт сможет даже ребенок! Не верите? - а Вы попробуйте!


24 июн 2010, 22:06
Профиль Отправить личное сообщение
Профи
Аватар пользователя

Зарегистрирован: 28 окт 2009, 20:11
Сообщений: 676
Откуда: Псков
Пол: мужской
Репутация: 372
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
:D
Вот это в тему !!!
Я как раз задумывался над этим ...
Урок по добавлению обратной связи есть , а вот уроку по добавлению комментариев нет ...
Надо скорее решить этот ВОПРОСИЩЕ :wink:

_________________
Незабываем ставить +


24 июн 2010, 22:18
Профиль Отправить личное сообщение ICQ WWW
Модератор
Аватар пользователя

Зарегистрирован: 09 мар 2010, 00:53
Сообщений: 4065
Репутация: 2834
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
Я бы вот этот кусочек
Код:
$author = stripslashes($author);
$text = stripslashes($text);
$author = htmlspecialchars($author);
$text = htmlspecialchars($text);

немного изменил
Код:
if (get_magic_quotes_gpc()) { //если включена автодобавка слэша
   $author = stripslashes($author);
   $text = stripslashes($text);
}
А функцию htmlspecialchars() лучше (имхо) использовать не сейчас, а перед выводом в браузер

_________________
Не забывайте отдыхать!
www.jscan.ru - ежедневно новые японские сканворды и судоку различной сложности!


25 июн 2010, 00:20
Профиль Отправить личное сообщение WWW
Администратор
Аватар пользователя

Зарегистрирован: 20 фев 2009, 01:38
Сообщений: 3159
Пол: мужской
Репутация: 3514
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
Vladis писал(а):
А функцию htmlspecialchars() лучше (имхо) использовать не сейчас, а перед выводом в браузер

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

_________________
Лучший хостинг по соотношению цена/качество! Бесплатный тестовый доступ 10 дней

Любой сайт обязан приносить прибыль! узнай как! видео-инструкция по работе прилагается!

Здесь раскрутить сайт сможет даже ребенок! Не верите? - а Вы попробуйте!


25 июн 2010, 14:37
Профиль Отправить личное сообщение
Профи
Аватар пользователя

Зарегистрирован: 28 окт 2009, 20:11
Сообщений: 676
Откуда: Псков
Пол: мужской
Репутация: 372
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
Как правильно создать таблицу . Точнее заполнить ее ! И как назвать таблицу ??
А то у меня ошибку выдает ...

_________________
Незабываем ставить +


25 июн 2010, 20:59
Профиль Отправить личное сообщение ICQ WWW
Профи
Аватар пользователя

Зарегистрирован: 28 окт 2009, 20:11
Сообщений: 676
Откуда: Псков
Пол: мужской
Репутация: 372
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
Все таблицу сделал , но все равно с кодом не понятное что то твориться.
Ошибка 500
Кто нить напишите полностью код обработчика !!!
Плиз ..... :shock:

_________________
Незабываем ставить +


25 июн 2010, 22:12
Профиль Отправить личное сообщение ICQ WWW
Профи
Аватар пользователя

Зарегистрирован: 28 окт 2009, 20:11
Сообщений: 676
Откуда: Псков
Пол: мужской
Репутация: 372
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
:ne_molchat: :ne_molchat: :ne_molchat:
Help ...
Php не поддается ...

_________________
Незабываем ставить +


26 июн 2010, 13:05
Профиль Отправить личное сообщение ICQ WWW
Администратор
Аватар пользователя

Зарегистрирован: 20 фев 2009, 01:38
Сообщений: 3159
Пол: мужской
Репутация: 3514
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
Что значит не поддается? я и написал полностью код обработчика. Говорите детальнее, где ошибка, что делали, куда цепляли и.т.п Короче если хотите помощи, будьте добры создать все условия, чтобы было понятно, что у Вас за ситуация и чем можно помочь...

_________________
Лучший хостинг по соотношению цена/качество! Бесплатный тестовый доступ 10 дней

Любой сайт обязан приносить прибыль! узнай как! видео-инструкция по работе прилагается!

Здесь раскрутить сайт сможет даже ребенок! Не верите? - а Вы попробуйте!


26 июн 2010, 15:17
Профиль Отправить личное сообщение
Профи
Аватар пользователя

Зарегистрирован: 28 окт 2009, 20:11
Сообщений: 676
Откуда: Псков
Пол: мужской
Репутация: 372
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
Ну я записал весь ваш код в обработчик.
Но не понятно куда вставить

<? $db = mysql_connect("localhost","имя пользователя,"пароль");
mysql_select_db("имя базы",$db);
?>

и еще вот этот код

$result3 = mysql_query("SELECT * FROM comments WHERE url='$put' order by id",$db);

if (mysql_num_rows($result3)>0)
{
$myrow3 = mysql_fetch_array($result3);
do
{
printf("<div class='comments'>
<div class='avtordate'> %s %s</div>
<div class='telo'>%s</div>
</div>",$myrow3["author"], $myrow3["date"], $myrow3["text"]);
}

while ($myrow3 = mysql_fetch_array($result3));
}

Я все запихал в один файл add_comments.php и естественно подставил свою базу данных и пароль к ней,
но чет не чего не работает ...

_________________
Незабываем ставить +


26 июн 2010, 15:45
Профиль Отправить личное сообщение ICQ WWW
Профи
Аватар пользователя

Зарегистрирован: 28 окт 2009, 20:11
Сообщений: 676
Откуда: Псков
Пол: мужской
Репутация: 372
Добавить пункт репутацииВычесть пункт репутации
Сообщение Re: Как добавить возможность комментариев на html сайт?
А вот еще: этот код я вообще никуда не вставил !!!
$put = $_SERVER['PHP_SELF']; // получаем адрес текущей страницы

С ним что делать ...
Может из за этого проблемы ...

_________________
Незабываем ставить +


26 июн 2010, 16:05
Профиль Отправить личное сообщение ICQ WWW
Показать сообщения за:  Сортировать по:  
Ответить на тему   [ Сообщений: 82 ]  На страницу 1, 2, 3, 4, 5 ... 9  След.
   Похожие темы   Автор   Ответов   Просмотров   Последнее сообщение 
Нет новых непрочитанных сообщений в этой теме В шаблоне комментариев у гостя уже стоит e-mail адрес

в форуме ВНЕШНИЕ РАСШИРЕНИЯ ДЛЯ JOOMLA

Петро

3

1681

06 июн 2011, 11:33

Zvirec [Bot] Перейти к последнему сообщению

Нет новых непрочитанных сообщений в этой теме Урок по установке и настройке скрипта комментариев.

в форуме ПРЕДЛОЖИТЬ ТЕМУ ДЛЯ УРОКА

uspesh

0

1287

03 авг 2010, 14:52

uspesh Перейти к последнему сообщению

Нет новых непрочитанных сообщений в этой теме Не могу найти компонент комментариев на joomla 1.7

в форуме ВНЕШНИЕ РАСШИРЕНИЯ ДЛЯ JOOMLA

Erika

3

1973

07 окт 2011, 17:40

Fatima Перейти к последнему сообщению

Нет новых непрочитанных сообщений в этой теме Как изменить порядок отображения комментариев на сайте

в форуме Drupal 6

Almazov_Sergey

1

708

06 мар 2017, 20:00

Val_Ery Перейти к последнему сообщению

Нет новых непрочитанных сообщений в этой теме К2 настройка комментариев и ещё один вопрос

в форуме ВНЕШНИЕ РАСШИРЕНИЯ ДЛЯ JOOMLA

Tati_2000

8

2650

11 янв 2013, 01:51

Tati_2000 Перейти к последнему сообщению


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
 cron