Несложная система комментирования с использованиям Ajax. Не использует никаких баз данных. Сообщения добавляются непосредственно в код html или php страниц.
Рассмотрим систему отображения формы по Ajax-запросу и записи комментариев.
<?php
// Универсальная система добавления комментариев на страницы любого сайта с использованием технологии Ajax
// Вы можете использовать данный код в любых своих разработках с сохранением этого комментария
// Размещение исходного кода на сайтах возможно только при наличии активной ссылки на первоисточник:
// http://HTMLWEB.RU/ajax/example/load_form.php
// Все остальные права принадлежат автору: Колесникову Дмитрию Геннадьевичу
$u_name=param('name');
$u_mail=param('mail');
$u_www=param('www');
$DEBUG= (getenv('REMOTE_ADDR')=='127.0.0.1');
$HTTP_REFERER = @$_SERVER['HTTP_REFERER'];
$comment=@$_POST['comment'];
if (empty($comment)) {?>
<form name="frmcomment" method="post" ONSUBMIT="SendComment();return false;">
Имя: <input type="text" name="name" size=18 value="<?=$u_name?>" />
E-mail:<input type="text" name="mail" size=18 value="<?=$u_mail?>" title="Защищен от спама" /><br />
<textarea name="comment" rows="4" style="width:100%"></textarea>
<INPUT TYPE="SUBMIT" VALUE="Поделиться мыслями" class="submit" />
<input type="hidden" name="url" value="<?=substr($HTTP_REFERER,strlen("http://".$_SERVER['SERVER_NAME']))?>" />
</form><span id="answer"></span>
<?exit; }
$logfile=$_SERVER['DOCUMENT_ROOT']."/log/comment.txt";
if(!isset($add_mes) && is_file($logfile)){
$t=((int)((time()-filemtime($logfile))));
if($t<60){echo "Нельзя отправлять сообщения чаще, чем раз в минуту!";exit;}
}
// при запросе через ajax всё всегда передается в UTF-8
$u_name=@iconv("UTF-8", "windows-1251//IGNORE", $u_name);
$comment=@iconv("UTF-8", "windows-1251//IGNORE", $comment);
// Вы можете добавить защиту от спамеров, но не забудьте при отправке формы через Ajax устанавливать поле referer
//if (!isset($HTTP_REFERER) || (strpos($HTTP_REFERER, "htmlweb.ru") === false) )die('Запрос из вне сайта!');
// отправляем сообщение админу сайта
$body=date("d.m.Y H:i", time())."\n".$_SERVER['REQUEST_URI']."\nИмя: ".$u_name."\nMail:".$u_mail."\nip:".$ip."\n".$comment."\n"; // сообщение администратору
file_put_contents ( $logfile, $body."\r\n" , FILE_APPEND);
if(mail("admin@".$_SERVER['SERVER_NAME'], "Сообщение из ".$HTTP_REFERER, $body, "From: <".$u_mail.">\nContent-Type: text/plain; charset=windows-1251"))
echo "Спасибо, Ваше сообщение отправлено!";
else echo "К сожалению, отправка сообщения не удалась!";
// добавляем сообщение на страницу
$file_name=$_SERVER['DOCUMENT_ROOT'].$url; // адрес страницы
if(file_exists($file_name)){
if(!empty($u_name)){$body=htmlspecialchars($u_name);
if(!empty($u_mail))$body="<a href='' title='e-mail' onclick=\"this.href='mailto:".$u_mail."'\"><b>".$body.'</b></a>';
}else $body='';
$body='<span class="time">'.date("d.m.Y H:i", time()).$comment.'</span>'.$body;
$body.="<br />\n".nl2br(AddBB(htmlspecialchars($comment)))."\n";
$body='<div class="comment">'.$body."</div><br />";
// добавляем в конец
// на самом деле, желательно вставлять в какое-то определенное место.
file_put_contents ( $file_name, "\r\n".$body."\r\n" , FILE_APPEND);
} else die('Не удалось добавить комментарий в '.$file_name);
function AddBB($comment) {
// делаем ссылки активными
$comment = preg_replace("/\s(([a-zA-Z]+:\/\/)([a-z][a-z0-9_\..-]*[a-z]{2,6})([a-zA-Z0-9\/*-?&%]*))\s/i", " <a href=\"$1\" target=_blank>$3</a> ", $comment);
$comment = preg_replace("/\s(www\.([a-z][a-z0-9_\..-]*[a-z]{2,6})([a-zA-Z0-9\/*-?&%]*))\s/i", " <a href=\"http://$1\" target=_blank>$2</a> ", $comment);
// можно сделать преобразование BB-кодов
// пример смотри на http://htmlweb.ru/php/example/bb_code.php
// можно совсем удалять все теги
//$comment=strip_tags($comment);
return $comment;}
function param($param) {
$param=(isset($_GET[$param])?$_GET[$param]:(isset($_POST[$param])?$_POST[$param]:false));
if (get_magic_quotes_gpc()) $param=stripslashes($param);
return $param;
}
?>