AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Загрузка формы и отправка её с использованием AJAX.

Несложная система комментирования с использованиям Ajax. Не использует никаких баз данных. Сообщения добавляются непосредственно в код html или php страниц.

Для начала разместим кнопку и div или span, в который будем подгружать форму:


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

Наша функция ajaxLoad, которая часто встречается в моих примерах:

Не будем на ней останавливаться подробно, т.к. она неоднократно описана на страницах http://htmlweb.ru/ajax/

Далее рассмотрим систему отображения формы по Ajax-запросу и записи комментариев.

// Универсальная система добавления комментариев на страницы любого сайта с использованием технологии 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?>" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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;
}

.

© Copyright 2008- by KDG



Rambler's Top100