мое замечание не исправлено
_____________
There never was a struggle in the soul of a good man that was not hard
<?php
// Error reporting:
error_reporting(E_ALL^E_NOTICE);
include "connect.php";
include "comment.class.php";
/*
/ Создаем запрос mysql для вывода старых комментариев из таблицы $comments
*/
$comments = array();
$result = mysql_query("SELECT * FROM comments ORDER BY id ASC");
while($row = mysql_fetch_assoc($result))
{
$comments[] = new Comment($row);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Комментарии</title>
<script language="JavaScript" type="text/javascript" src="ajax_captcha.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<h1>Комментарии на AJAX с использованием PHP, MySql, JS</h1>
<div id="main">
<?php
/*
/ Вывод комментариев <form action="<?php echo $_SERVER['PHP_SELF']; ?>" id="addCommentForm" method="post" enctype="multipart/form-data">
*/
foreach($comments as $c){
echo $c->markup();
}
?>
<div id="addCommentContainer">
<p>Добавление комментария</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" id="addCommentForm" method="post" enctype="multipart/form-data">
<form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform">
<div>
<label for="name">Ваше имя</label>
<input type="text" name="name" id="name" value="name" />
<label for="email">Email</label>
<input type="text" name="email" id="email" value="fedor@12.ru"/>
<label for="url">Вебсайт (не обязательное поле) </label>
<input type="text" name="url" id="url" value="http://" />
<label for="body">Комментарий</label>
<textarea name="body" id="body" cols="20" rows="5" ></textarea>
<label for="code">Введите символы</label>
<br />
<img id="imgCaptcha" src="captcha.php" onclick="setTimeout('refreshimg()', 300); return false;" alt="Нажми чтобы изменить картинку" />
<input type="text" name="code" id="code" />
<input type="submit" id="submit" value="Отправить" onclick="setTimeout('refreshimg()', 300);"/>
</div>
</form>
</div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
<?php
session_start();
class Comment
{
private $data = array();
public function __construct($row)
{
/*
/ конструктор
*/
$this->data = $row;
}
public function markup()
{
/*
/этот метод выводит разметки XTML комментарий
*/
// Создание псевдонима, чтобы не писать $this->data
// каждый раз
$d = &$this->data;
$link_open = '';
$link_close = '';
if($d['url']){
// если человек заполнил url
// определяем ссылку
$link_open = '<a href="'.$d['url'].'">';
$link_close = '</a>';
}
// Преобразование времени
$d['dt'] = strtotime($d['dt']);
// Необходим для изображений Gravatar по умолчанию:
$url = 'http://'.dirname($_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]).'/img/default_avatar.gif';
return '
<div class="comment">
<div class="avatar">
'.$link_open.'
<img src="http://www.gravatar.com/avatar/'.md5($d['email']).'?size=50& default='.urlencode($url).'" />
'.$link_close.'
</div>
<div class="name">'.$link_open.$d['name'].$link_close.'</div>
<div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('H:i d M Y',$d['dt']).'</div>
<p>'.$d['code'].'</p>
<p>'.$d['body'].'</p>
</div>
';
}
public static function validate(&$arr)
{
/*
/ Данный метод используется для проверки данных,
/ передаваемых через AJAX.
/
/ Это возвращение true/false в зависимости
/ от данных является действительным, и заполняеться
/ Масив $arr передается в качестве параметра
/ Либо действительно ввод данных, или сообщения об ошибках.
*/
$errors = array();
$data = array();
// filter_input функция, введенная в PHP 5.2
if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)))
{
$errors['email'] = 'email';
}
if(!($data['url'] = filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)))
{
// Если не правильный URL
$url = '';
}
// Использование фильтров с пользовательской
// функцией обратного вызова:
if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
{
$errors['body'] = 'Введите комментарий.';
}
if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
{
$errors['name'] = 'Введите ваше имя.';
}
//$_SESSION['rand_code'] 'Не верно введены символы'
if(!($data['code'] ==$_SESSION['rand_code']))
{
$errors['code'] = $_SESSION['rand_code'];
}
//Если есть ошибки, записываем $errors в массив $arr:
if(!empty($errors)){
$arr = $errors;
return false;
}
foreach($data as $k=>$v){
$arr[$k] = mysql_real_escape_string($v);
}
// Убедимся, что письма в нижнем регистре
$arr['email'] = strtolower(trim($arr['email']));
return true;
}
private static function validate_text($str)
{
/*
/ Этот метод используется внутри как FILTER_CALLBACK
*/
if(mb_strlen($str,'utf8')<1)
return false;
// Кодировать все специальные символы
// HTML (<,>, ", и т.д. ..) и преобразовывает
// символы новой строки в <br /> теги:
$str = nl2br(htmlspecialchars($str));
// Удалить символы новой строки, которые остались
$str = str_replace(array(chr(10),chr(13)),'',$str);
return $str;
}
}
?>