Перейти к содержимому

MOAB

* * * * * 1 Голосов

Скрипт коментария для html


  • Войдите, чтобы ответить
Сообщений в теме: 27

#1 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

Отправлено 30 Октябрь 2014 - 11:07

В связи с темой http://webimho.ru/topic/10607/ заинтерисовался простым вопросом, а есть ли простой готовый скрипт на php который позоволяет делать коментарии на html странице?
То есть на странице есть 2 php скрипта:
1. Подгружает из тестового файла коменты струтуировнного файла: ip, date, name_user (вводит сам), сам комент.
2. Форма внизу страницы (добавить коментарий), 2 поля: name_user, сам комент. По нажатию отправить добавляет в конец текстового файла (для каждой страницы свой файл). Регистрация не нужна, другие поля не нужны, капча не нужна.
Важна простота скрипта, чтобы ставить сложную обработку коментариев и блокированию всякой фигни.
Все текстовые файлы чтобы хранились в заданном каталоге (чтобы не путаться).
понимаю, что скрипт простой, но вдруг есть готовый, чтобы самому не писать? Или сколько стоит (если не дорого).

#2 Serg_pnz

Serg_pnz

    Hanswurst

  • Старая гвардия
  • PipPipPipPipPip
  • 2 061 сообщений
1 658
  • Из*** гонец? Гонец из Пензы?... Нет – реальный гонец!

Отправлено 30 Октябрь 2014 - 13:41

Поиск рулит))
http://ecomment.su/
http://searchengines...ad.php?t=198579

Вообще цель игры не понятна. Ну отправляем форму, она принимается, складывается в серилизованный массив и пишется в txt. Страница считывает из файла массив, отдает пользователю. Можно на аяксе сделать.
Цены на рекламу на форуме Webimho | Пущу на квартиру VPS саттелиты по 30 руб./мес.
Ида: Не все кальсоны с оторванными пуговицами – брюки. © Serg_pnz

#3 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 15 Ноябрь 2014 - 16:48

Добрался до этого дела. Нет мне ваш вариант не нравится. 1. аджакс не очень люблю, я слаб в программировании, но по моему опыту если на сайте что то тормозит и есть аджакс вставки - первым делом надо отключить их. 2. моя задача более простая, мне не нужны никакие формы, редакторы и прочее. Просто вставка текстового коментария + проверка сообщения на минус теги (все <> и http, www, .com в бан) и матершинные слова.
Далее мне не нравится идея писать всё в один текстовой файл. Логичнее в каталоге comment создать для каждой html страницы свой текстовой файл и писать информацию прямо туда. Таким образом выборка коментариев на страницу будет максимально простой для сервера, верно?
-----------------
буду юзать форум, как твиттер - форму сделал.

итак, меня устраивает такая форма.
<form id="komentarii" name="komentarii" method="post" action="">
  <p>
	<label for="name">Ваше имя (по желанию)</label>
	<input type="text" name="nm" />
	<br />
	<label for="comment">Пишите  здесь:</label>
	<textarea name="cm" cols="45" rows="5"></textarea>
	<br />
	<label>Жмите здесь:
	  <input type="submit" name="submit_comment" id="submit_comment" value="Отправить" />
	</label>
  </p>
</form>
<?php
//получает открываемую страницу
$host=getenv("REQUEST_URI");
	# Если кнопка нажата
	if( isset( $_POST['submit_comment'] ) )
	{
//ip посетителя
	$ip=getenv("REMOTE_ADDR");
//$host=getenv("REQUEST_URI");
	$date = date("Y.m.d");
	$time= date("H:i:s");
	$itogvfile="ip: ".$ip."	"."Дата и время: ".$date." ".$time."	"."Имя - ".htmlspecialchars($_POST['nm'])."	"."Комментарий:<BR>".htmlspecialchars($_POST['cm'])."<BR>";
		file_put_contents("comment$host","$itogvfile\n", FILE_APPEND);
	}

// Вывод комментариев
	readfile("comment$host");
?>
А теперь что мне не нравится :)
1. каталог comment надо делать с правами 0777. Как сделать иначе (почему надо такие права)?
2. не совсем понимаю, как наиболее просто блокировать любые теги? Чтобы если встречается символ < или > - то просто ничего не делать.
3. Как реализовать проверку коментариев, учитывая. что проверок будет достаточно много? Ну как минимум стоп слова, потом стоп ip, потом мало ли чего придумаю. Может проверку вытащить в отдельный php файл и подгружать ее, типа
include 'proverka.php';
в нем и будет, если всё путем
file_put_contents("comment$host","$itogvfile\n", FILE_APPEND);


#4 Serg_pnz

Serg_pnz

    Hanswurst

  • Старая гвардия
  • PipPipPipPipPip
  • 2 061 сообщений
1 658
  • Из*** гонец? Гонец из Пензы?... Нет – реальный гонец!

Отправлено 15 Ноябрь 2014 - 17:10

azsx, при всем уважении... но херня какая-то а не ТЗ.

1. Если не умеете готовить кошек, то при чем тут аякс? Тормозит он только если у программера кривые ручки.
2. Есть фильтры, типа strip_tags, висвиги можно отключить. Фильтр мата не такая уж тривиальная задача, но решить можно.
3. Писать в файлы вообще не верно, зачем мускул придумали?

далее
1. Юзать мускул. Ну или назначить папке 777, создать файл, назначить ему 666, назначить папке 777 (тут могу быть не очень прав, т.к. тему не прорабатывал, не считаю для себя приоритетной)
2. http://www.php.su/fu...ons/?strip-tags
3. Если это только проверки комментариев, то зачем их выносить в отдельный файл? И вообще. Ты хочешь сначала записать камент в файл, а потом его проверять и если всё нормально выводить на страницу? Ну-ну... запиши к себе на сервер "Войну и мир" раз 100500. Второе - каждый пользователь, пришедший на страницу, будет инициализировать скрипт проверки. Проверки должны быть осуществлены сразу по приходу формы.
Кстати, типа "вынести" проверки за скрипт можно как раз отправляя каменты аяксом.
Цены на рекламу на форуме Webimho | Пущу на квартиру VPS саттелиты по 30 руб./мес.
Ида: Не все кальсоны с оторванными пуговицами – брюки. © Serg_pnz

#5 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 15 Ноябрь 2014 - 20:28

Итак, изменил свой первоначальный скрипт. Он состоит из двух файлов, это я сделал для того, чтобы файл в шаблоне был более понятен для чтения и редактирования. То есть в шаблон будет вставлен первый файл 34 строчки, что вполне терпимо. Заодно шаблон заблокирует большую часть автоматического спама (капчи то нет). А в файле proverka.php я уже буду изголятся и делать любые сложные фильтры. Вот снова вопросы:
1. В моем скипте есть баг, обновление страницы после отправки комментария приводит к отсылу дубликата комментария. Как это исправить?
2. Так и не решенный вопрос, почему на каталог надо ставить 0777 и как это грозит сайту?
3. Какой составить .htaccess для каталога комментариев?
<body>

<form id="komentarii" name="komentarii" method="post" action="">
  <p>
	<label for="name">Ваше имя (по желанию)</label>
	<input type="text" name="nm" />
	<br />
	<label for="comment">Пишите  здесь:</label>
	<textarea name="cm" cols="45" rows="5">&lt;textarea>
	<br />
	<label>Жмите здесь:
	  <input type="submit" name="submit_comment" id="submit_comment" value="Отправить" />
	</label>
  </p>
</form>
<?php
$host=getenv("REQUEST_URI");
$md = md5($host);
$sam_file = "comment/$md";
	# Если кнопка нажата
	if(isset($_POST['submit_comment'])) {
//ip посетителя
	$ip=getenv("REMOTE_ADDR");
//получает открываемую страницу
//$host=getenv("REQUEST_URI");
	$date = date("Y.m.d");
	$time= date("H:i:s");
		if (strlen(htmlspecialchars($_POST['nm'])) < 50) {
			if (strlen(htmlspecialchars($_POST['cm'])) > 0) {
				if  (strlen(htmlspecialchars($_POST['cm']) < 40000)) {
					if (strip_tags(htmlspecialchars($_POST['nm'])) == htmlspecialchars($_POST['nm'])) {
						if (strip_tags(htmlspecialchars($_POST['cm'])) == htmlspecialchars($_POST['cm'])) {
							include("proverka.php");
						}
					}
				}
			}
		}
	}

	readfile("$sam_file");
?>

</body>

<?php
$itogvfile="ip: ".$ip."	"."Дата и время: ".$date." ".$time."	"."Имя - ".htmlspecialchars($_POST['nm'])."	"."Комментарий:<BR>".htmlspecialchars($_POST['cm'])."<BR>";
file_put_contents("$sam_file","$itogvfile\n", FILE_APPEND);
?>
Обратите внимание, вместо урл стал расчитывать md5 сумму. Это, наверное, долго, зато можно не волноваться за подкаталоги и прочее. Есть ли что то легче md5?
зы
почему не аякс? Потому что у меня кривые ручки.
Почему не мускул? Потому что мои сайты - делать с применением mysql - это круто. Мне нужен сайт, который запускается на любом рабочем шаред хостинге, файлы самое то. К тому же сайты изначально без mysql и движка и соединяться с базой из-за комментариев я не вижу смысла.

#6 Serg_pnz

Serg_pnz

    Hanswurst

  • Старая гвардия
  • PipPipPipPipPip
  • 2 061 сообщений
1 658
  • Из*** гонец? Гонец из Пензы?... Нет – реальный гонец!

Отправлено 15 Ноябрь 2014 - 22:48

Т.е. лестница if'фов - это очень читаемо?)))
м.б. так лучше?
$str_nm = strlen(htmlspecialchars($_POST['nm']));
$str_cm = strlen(htmlspecialchars($_POST['cm']));
//и т.д.
if ($str_nm<50 AND $str_cm>0 AND AND $str_cm<4000) { //и т.д. по списку
   //проверка
}

По поводу этого
                        if (strlen(htmlspecialchars($_POST['cm'])) > 0) {
                                if  (strlen(htmlspecialchars($_POST['cm']) < 40000)) {
надо отдельно сказать.
"Этого" - это когда делают одну и ту же операцию с одной переменной, вместо того, чтобы записать результат.
Вот на аяксе тоже на странице понаобращаются к тегам вместо того, чтобы зафиксировать результат выборки, а потом у них всё тормозит.

В защиту аякса: многие функции проверки и фильтрации можно сделать еще на клиенте - это ускорит работу страницы. (Это не отменяет проверку на сервере!)
Цены на рекламу на форуме Webimho | Пущу на квартиру VPS саттелиты по 30 руб./мес.
Ида: Не все кальсоны с оторванными пуговицами – брюки. © Serg_pnz

#7 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 16 Ноябрь 2014 - 05:43

По какой то причине конструкции типа
if ($str_nm<50 AND $str_cm>0) {
if ($str_nm<50 && $str_cm>0) {
if ($str_nm<50 .AND. $str_cm>0) {
у меня не работают, выводят белый экран. у меня php 5 4 4 - 14. Почему так - не знаю :(

Цитата

"Этого" - это когда делают одну и ту же операцию с одной переменной, вместо того, чтобы записать результат.
Вот на аяксе тоже на странице понаобращаются к тегам вместо того, чтобы зафиксировать результат выборки, а потом у них всё тормозит.
вот можно чуть подробнее? Мне надо чтобы $str_cm была в диапазоне 0 - 4000. И как это надо было проверять правильно?
---------------

Цитата

Т.е. лестница if'фов - это очень читаемо?
нет. Я подразумевал, что первый файл будет непосредственно в шаблоне и мне желательно, чтобы в нем было не очень много строк. А отдельный файл для проверки будет постепенно разбухать, но видеть я его буду, только когда полезу в шаблоны.

Цитата

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

#8 Матумба

Матумба

    во имя матана

  • Участник
  • PipPipPipPipPip
  • 5 128 сообщений
6 464
  • ИзКрии

Отправлено 16 Ноябрь 2014 - 09:43

чё-то я отвлёкся... <_<
ну да, это же какому-то другому чуваку поменяют руки и ноги местами в понедельник
Спойлер

"Они не могут ничего, у них лапки котят"

#9 Serg_pnz

Serg_pnz

    Hanswurst

  • Старая гвардия
  • PipPipPipPipPip
  • 2 061 сообщений
1 658
  • Из*** гонец? Гонец из Пензы?... Нет – реальный гонец!

Отправлено 16 Ноябрь 2014 - 12:36

Вот правильно написал, разделив проверки и на каждую собирает в лог ошибок, т.к. пользователь не должен тупить, раздумывая где у него ошибка в форме.
Цены на рекламу на форуме Webimho | Пущу на квартиру VPS саттелиты по 30 руб./мес.
Ида: Не все кальсоны с оторванными пуговицами – брюки. © Serg_pnz

#10 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 18 Ноябрь 2014 - 12:02

вот это код...
<label>Сообщение <textarea name="cm" maxlength="<?php print $_cm_max;?>" cols="45" rows="5"><?php print htmlspecialchars(@$_POST['cm']);?>[b]</textarea>[/b]</label> 
вот где я отметил у вас опечатка. Вопросы:
1. Судя по всему проверки на дубликат записи нет, да? А как его реализовать? Есть в php поиск неявного дубля? То есть, мне не надо чтобы на одной странице два раза подряд от разных людей в разное время был одинаковый комментарий, типа: "спасибо, всё очень хорошо написано".
2. Неожиданно вслыла проблема, в md5 при формировании строки может быть символ "/" соотвественно пишется не файл, а каталог. Наверное, надо воспользоваться str_replace, верно?
3. Почему же у меня пишется только в каталог с 0777? И чем это опасно?

#11 Матумба

Матумба

    во имя матана

  • Участник
  • PipPipPipPipPip
  • 5 128 сообщений
6 464
  • ИзКрии

Отправлено 18 Ноябрь 2014 - 12:13

Просмотр сообщенияazsx сказал:

вот где я отметил у вас опечатка.
да, поправил, несмертельно

Просмотр сообщенияazsx сказал:

Вопросы: 1. Судя по всему проверки на дубликат записи нет, да? А как его реализовать? Есть в php поиск неявного дубля? То есть, мне не надо чтобы на одной странице два раза подряд от разных людей в разное время был одинаковый комментарий, типа: "спасибо, всё очень хорошо написано".
можно сделать дополнительный индекс с сообщениями (больше возможностей ковырять) или их md5 (проще).

Просмотр сообщенияazsx сказал:

2. Неожиданно вслыла проблема, в md5 при формировании строки может быть символ "/" соотвественно пишется не файл, а каталог. Наверное, надо воспользоваться str_replace, верно?
Для каждой темы заводится свой каталог, каждое сообщение пишется в свой файл, после каждого сообщения перестраивается кеш сообщений для вывода. Это просто, надежно и быстро.

Просмотр сообщенияazsx сказал:

3. Почему же у меня пишется только в каталог с 0777? И чем это опасно?
что-то не так с правами, можно попробовать выставить пользователя для каталога с записями с пользователем и группой от которых работает php. (chown -R phpuser:phpgroup ./storage или как-то так)
"Они не могут ничего, у них лапки котят"

#12 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 18 Ноябрь 2014 - 12:25

Цитата

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

#13 Матумба

Матумба

    во имя матана

  • Участник
  • PipPipPipPipPip
  • 5 128 сообщений
6 464
  • ИзКрии

Отправлено 18 Ноябрь 2014 - 12:34

Просмотр сообщенияazsx сказал:

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

#14 Spinne

Spinne

    Зануда™

  • Основатель
  • PipPipPipPipPip
  • 2 007 сообщений
3 427
  • Излесу, вестимо

Отправлено 18 Ноябрь 2014 - 14:37

Просмотр сообщенияazsx сказал:

1. каталог comment надо делать с правами 0777. Как сделать иначе (почему надо такие права)?
Это "универсальное решение". :) То есть, если дать 777, то от конфигурации хостинга не зависит. А на конкретном хосте можно привязаться к его настройкам – смысл только в том, чтобы у юзверя, от которого запускается php (если CGI-модуль) или Апач (если php как модуль Апача) хватило прав для создания/чтения/записи файлов в этом каталоге. Ну, и заодно чтобы не было проблем у FTP-юзера (может ведь и не совпадать).

А опасность в этом вопросе возникает не из-за прав на каталог, а из-за возможности создать произвольный файл в этом каталоге. Или внедрить исполняемый php-код в сообщение. Тут страховаться нужно не на уровне прав доступа, а на уровне алгоритмов работы с комментами и "обезвреживания" возможных закладок в сообщениях.
Ник не менял, подпись поменяю позже. Ваш Зануда. Он же AHP-net, но это уже там

#15 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 18 Ноябрь 2014 - 15:18

Цитата

А опасность в этом вопросе возникает не из-за прав на каталог, а из-за возможности создать произвольный файл в этом каталоге
то есть надо еще отдельную проверку на <? и ?>, верно?

#16 Serg_pnz

Serg_pnz

    Hanswurst

  • Старая гвардия
  • PipPipPipPipPip
  • 2 061 сообщений
1 658
  • Из*** гонец? Гонец из Пензы?... Нет – реальный гонец!

Отправлено 18 Ноябрь 2014 - 15:24

В .htaccess каталога хранения каментов положить запрет выполнения скриптов и ничего фильтровать не надо.
Цены на рекламу на форуме Webimho | Пущу на квартиру VPS саттелиты по 30 руб./мес.
Ида: Не все кальсоны с оторванными пуговицами – брюки. © Serg_pnz

#17 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 18 Ноябрь 2014 - 15:29

в варианте ибонех таких каталогов будет несколько тысяч. Допустим, у меня реальный сайт > 40 тысяч страниц, я на него поставлю коменты, и?

#18 Serg_pnz

Serg_pnz

    Hanswurst

  • Старая гвардия
  • PipPipPipPipPip
  • 2 061 сообщений
1 658
  • Из*** гонец? Гонец из Пензы?... Нет – реальный гонец!

Отправлено 18 Ноябрь 2014 - 15:33

В корне достаточно, т.к. правила распространяются вниз.
каменты/ - тут хтакцесс
каменты/папка1
каменты/папка2
...

Цены на рекламу на форуме Webimho | Пущу на квартиру VPS саттелиты по 30 руб./мес.
Ида: Не все кальсоны с оторванными пуговицами – брюки. © Serg_pnz

#19 azsx

azsx

    Почетный

  • Основатель
  • PipPipPipPipPip
  • 5 013 сообщений
3 139

TC Отправлено 18 Ноябрь 2014 - 15:40

каменты/папка1
каменты/папка2
...
каменты/папка40000
верно?

#20 Serg_pnz

Serg_pnz

    Hanswurst

  • Старая гвардия
  • PipPipPipPipPip
  • 2 061 сообщений
1 658
  • Из*** гонец? Гонец из Пензы?... Нет – реальный гонец!

Отправлено 18 Ноябрь 2014 - 15:51

верно
Цены на рекламу на форуме Webimho | Пущу на квартиру VPS саттелиты по 30 руб./мес.
Ида: Не все кальсоны с оторванными пуговицами – брюки. © Serg_pnz



Похожие темы


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных



© 2019 SMO&SEO форум «WEBIMHO» — продвижение и создание сайтов, интернет-маркетинг

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


Россия, г. Москва

Мы в соцсетях: twitter | вконтакте | facebook | livejournal