Цитата(BuShaRt @ 29.4.2007, 00:19 ) | Вообще как выще указывал Gold Dragon переменные удаляються функцией unset, но с $_POST этот прием не срабатывает, сам не знаю почему, может гуру ответят |
Это точно, правда я так и не понял почему, что-то в доках ничего не нашёл. Вернее POST легко удаляется (смотрет $GLOBALS до и после), но при перезагрузке опять появляется  В общем я попытался собрать свой код в одном месте ( у меня это разные файлы). commentadd.phpКод | <?php /********************************************************************* Модуль для добавления комментариев //*********************************************************************/ DEFINE('_COM_USER','Кто-то'); DEFINE('_COM_FLUD',180); DEFINE('_COM_ERR1','<br>Не указано название.'); DEFINE('_COM_ERR2','Данные успешно добавлены.'); DEFINE('_COM_ERR3','<br>Отсутствует текст в поле отзыва.');
$content = modCommentAdd(); echo $content;
function modCommentAdd(){ GLOBAL $baza; if(!isset($_POST['com'])){// вывод формы (начало) // получение данных из кука при завершении с ошибкой $info['name'] = (isset($_COOKIE['name'])) ? $_COOKIE['name'] : ''; $info['user_com'] = (isset($_COOKIE['user_com'])) ? $_COOKIE['user_com'] : ''; $info['user_nik'] = (isset($_COOKIE['user_name'])) ? $_COOKIE['user_nik'] : ''; $info['user_mail'] = (isset($_COOKIE['user_mail'])) ? $_COOKIE['user_mail'] : ''; $info['error'] = (isset($_COOKIE['error'])) ? $_COOKIE['error'] : ''; // удаление данных об ошибке setcookie('error',$info['error'],time()-60);
return sCommentAddForm($info); }else{// запись данных из формы $info['error'] = ''; // проверка названия $info['name'] = strip_tags(trim($_POST['name'])); if($info['name']=='') $info['error'] .= _COM_ERR1; // проверка коментария $info['user_com'] = strip_tags(trim($_POST['user_com'])); if($info['user_com']=='') $info['error'] .= _COM_ERR3; // проверка именя юзера $info['user_nik'] = strip_tags(trim($_POST['user_nik'])); if($info['user_nik']=='') $info['user_nik'] = _COM_USER; // проверка мыла $info['user_mail'] = validMail($_POST['user_mail']); // запись данных в кук setcookie("name",$info['name'],time()+60); setcookie("user_com",$info['user_com'],time()+60); setcookie('user_nik',$info['user_nik'],time()+60*60*24*10); setcookie('user_mail',$info['user_mail'],time()+60*60*24*10); // если есть ошибки if($info['error']!=''){ // записать ошибки $info['error'] = '<p class=txt9>Ошибка!'.$info['error']; setcookie('error',$info['error'],time()+60); // переход на страницу вывода комментариев header("Location: http://".$_SERVER['HTTP_HOST']."/comment.php"); exit; } // проверка на флуд $fludIndex = (isset($_COOKIE['index'])) ? $_COOKIE['index'] : ''; if(isset($_COOKIE['index'])){ $temTime = _COM_FLUD-(time()-$fludIndex); $info['error'] = '<p class=txt9>Ошибка!<br>На сайте установлен флуд-контроль.'; $info['error'] .= '<br>Вы не можете сейчас добавить комментарий.'; $info['error'] .= '<br>У Вас осталось '.$temTime.' секунд.'; setcookie('error',$info['error'],time()+60); // переход на страницу вывода комментариев header("Location: http://".$_SERVER['HTTP_HOST']."/comment.php"); exit; } //************************************************ $info['user_data'] = date("Y-m-d H:i:s"); $info['user_ip'] = fGetIP(); // сдесь можно добавить проверку по IP
// запись в базу $z = "INSERT INTO `comment` ( `id` , `user_data` , `user_com` , `user_nik` , `user_mail` , `user_ip` ) VALUES ( '', '".$info['user_data']."', '".$info['user_com']."', '".$info['user_nik']."', '".$info['user_mail']."', '".$info['user_ip']."', )"; $r = $baza->query($z); // флуд контроль setcookie('index', time() ,time()+_COM_FLUD);
header("Location: http://".$_SERVER['HTTP_HOST']."/comment.php"); exit; } }
function validMail($mail){ //******************************************************************** // функция проверки адреса почты // при ошибке возвращает '' //******************************************************************** $result = (preg_match('/[0-9A-Za-z._-]+@([0-9a-z_-]+\.)+[a-z]{2,4}/', $mail)==0)? '' : $mail ; return $result; } function fGetIP(){ //******************************************************************** // функция получения IP //******************************************************************** if ($ip = getenv("HTTP_CLIENT_IP")){ return $ip; } if ($ip = getenv("HTTP_X_FORWARDED_FOR")){ if ($ip == '' || $ip == "unknown"){ $ip = getenv("REMOTE_ADDR"); } return $ip; } if ( $ip = getenv("REMOTE_ADDR") ){ return $ip; } } function sCommentAddForm($info){ //******************************************************************** // скин формы //******************************************************************** return <<<EOF <div align="center"><p> </p> <form method="post"> <table border="0" cellpadding="10" width="100%"> <tr valign="top"> <td align="center" class="txt8"> <p>*Название<br><input name="name" type="text" value="{$info['name']}"> <p>*Ваш отзыв<br><textarea name="user_com" rows=7 cols=45>{$info['user_com']}</textarea> <p>Ваше имя: <input name="user_nik" type="text" value="{$info['user_nik']}"> <p>Mail: <input name="user_mail" type="text" value="{$info['user_mail']}">
<p><input type="submit" value="Добавить" name="com"> <p class="txt4">*Эти поля обязательны для заполнения </td> </tr> <tr> <td></td> <td></td> </tr> </table> </form> </div> EOF; }
?>
|
comment.phpКод | <?php /********************************************************************* Модуль для работы с комментарием //*********************************************************************/ $content = modComment();
echo $content;
function modComment(){ // здесь получаешь и обрабатываешь комментарии как тебе угодно // лично я все данные закидываю в массиа $info
// обработка ошибки $info['error'] = (isset($_COOKIE['error'])) ? $_COOKIE['error'] : '';
$result = sCommentMain($info); return $result; }
function sCommentMain($info){ //****************************************************************** // форма для вывода кооментариев //****************************************************************** return <<<EOF <p align="center">{$info['error']} <hr> <p>тут всё остальное <hr> <p><a href="commentadd.php">Добавить комментарий</a> EOF; } ?>
|
В общем, комментировал как мог... Если будет не понятно, спрашивай Это сообщение отредактировал(а) Gold Dragon - 1.5.2007, 10:48
--------------------
Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем!
|