Добрый день. Сделали мне как-то давно сайт. Жил он себе работал, но тут захотелось мне его на новый хостинг перейти. Перенес все. Все вроде работает, но! Гостевая книга перестала сохранять сообщения. То есть сообщения в базу записываются но поле текста пустое. При этом регистрация новых пользователей работает. На старом хостинге все работал. Ничего не менял. Подскажите пожалуйста в чем может быть дело. Уже все мозги себе сломал. Я то в php mysql на уровне новичка только разбираюсь. Вот код: PHP: <? error_reporting(E_ALL); ini_set('display_errors', 1); $body.='<img src="http://www.tretredici.ru/images/campioni.jpg" border="0"> <style> .quote{ background-color: #E1E1E1; padding: 5px; width: 100%; } .bb_quote{ width: 100%; } a{ color: #5A0000; } </style> <table border="0" cellpadding="0" cellspacing="0" width="540"> <tbody><tr bgcolor="#aa0000"> <td align="left" width="32"><img src="http://www.tretredici.ru/images/logo_l.jpg" border="0" height="20" width="31"></td> <td align="center" width="476"><font face=verdana size=2px color=#DAA520><b>ГОСТЕВАЯ КНИГА</b></font></td> <td align="right" width="32"><img src="http://www.tretredici.ru/images/logo_r.jpg" border="0" height="20" width="31"></td> </tr> </tbody></table>'; if($_GET['mod']=="user" && is_numeric($_GET['user'])){ $result_admin_mod=mysql_query("SELECT * FROM `users_guest` WHERE `id`='".$_GET['user']."'"); $admin_mod=mysql_fetch_array($result_admin_mod); $body.='<a href="javascript:history.go(-1);">Вернуться</a><br /><h1>'.$admin_mod['login'].'</h1>'; $body.='<table> <tr><td><b>Имя:</b></td><td>'.$admin_mod['fullname'].'</td></tr> <tr><td><b>Населённый пункт:</b></td><td>'.$admin_mod['city'].'</td></tr> <tr><td><b>Почта:</b></td><td>'.eregi_replace("@","[собака]",$admin_mod['mail']).'</td></tr> <tr><td><b>ICQ:</b></td><td>'.$admin_mod['icq'].'</td></tr> <tr><td><b>Обо мне:</b></td><td>'.$admin_mod['me'].'</td></tr> </table>'; $body.='<a href="?mod=guestbook&user='.$_GET['user'].'">Смотреть все сообщения</a>'; } if($_GET['mod']=="guestbook"){ //Удаление и возвращение обратно $admin_mod_edit=""; if(is_numeric($del)){ $result_admin_mod=mysql_query("SELECT * FROM `text_guest` WHERE `id`='".$id."'"); $admin_mod=mysql_fetch_array($result_admin_mod); if($admin['users']==$users['id'] || $users['status']=="2"){ mysql_query("DELETE FROM `text_guest` WHERE `id` = '".$del."' LIMIT 1"); } header("Location: ".$_SERVER['HTTP_REFERER']); } if(is_numeric($edit)){ if(isset($_POST['submit'])){ $text=eregi_replace("'","",$text); $time=time(); mysql_query("UPDATE `text_guest` SET `text` = '".$text."' WHERE `id` ='".$edit."' LIMIT 1 "); header("Location: /guestbook/?mod=guestbook"); } $result_admin_mod=mysql_query("SELECT * FROM `text_guest` WHERE `id`='".$edit."'"); $admin_mod=mysql_fetch_array($result_admin_mod); if($admin['users']==$users['id'] || $users['status']=="2"){ $result_admin_mod=mysql_query("SELECT * FROM `text_guest` WHERE `id` = '".$edit."' LIMIT 1"); $admin_mod_edit=mysql_fetch_array($result_admin_mod); } // } //$body.='Основная гостевая книга'; //Получение комманд и выполнение if(!is_numeric($_GET['edit'])){ if(isset($_POST['submit']) && $users['id']!="0"){ $text=eregi_replace("'","",$text); $timer=time(); if(mysql_query("INSERT INTO `text_guest` ( `id` , `users` , `text` , `ip` , `time`)VALUES ('', '".$users['id']."', '".$text."', '".$_SERVER['REMOTE_ADDR']."', '".$timer."')")){ $body.='<span style="color: green;">Сообщение удачно добавлено</span>'; }else{ //print "INSERT INTO `text_guest` ( `id` , `users` , `text` , `ip` , `time`)VALUES ('', '".$users['id']."', '".$text."', '".$_SERVER['REMOTE_ADDR']."', '".$timer."'"; } } } if(!is_numeric($str)){$str="1";} $limit=20*($str-1); if(isset($_GET['user'])){ $where="WHERE `text_guest`.`users`='".$_GET['user']."'"; }else{ $where=""; } if(!isset($_GET['user'])){ if($status=="1"){ $body.="<br /> <div style=\"position: absolute; width: 421px; height: 250px; z-index: 2; left:10px; top:15px; visibility:hidden\" id=\"smail\"> </div> <form method=\"post\" action=\"\"> <table align=\"center\" cellspacing=\"0\" bgcolor=\"#FBFBFB\" width=\"95%\" cellpadding=\"0\" style=\"border-collapse: collapse; text-align: center; border: 1px solid #AA0000\"> <tr> <td bgcolor=\"#AA0000\"> <font color=\"#FFFFFF\" size=2><span lang=\"ru\">Добавить сообщение к теме</span></font> </td> </tr> <tr> <td> "; $body.=" <table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td bgcolor=\"#FFFFFF\" colspan=\"2\" style=\"padding: 5px;\"> <table border=\"0\" align=\"left\" cellspacing=\"0\" cellpadding=\"0\"> <tr><td><a onclick=\"insertTags('[b]','[/b]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/bold.gif\" border=\"0\" alt=\"Жирный шрифт\" title=\"Жирный шрифт\"></a> </td> <td> <a onclick=\"insertTags('[i]','[/i]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/italic.gif\" border=\"0\" alt=\"Курсив\" title=\"Курсив\"></a> </td> <td> <a onclick=\"insertTags('[u]','[/u]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/underline.gif\" border=\"0\" alt=\"Подчёркнутый\" title=\"Подчёркнутый\"></a> </td> <td> </td> <td> <a onclick=\"insertTags('[align=left]','[/align]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/left.gif\" border=\"0\" alt=\"Текст слева\" title=\"Текст слева\"></a> </td> <td> <a onclick=\"insertTags('[align=center]','[/align]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/center.gif\" border=\"0\" alt=\"По центру\" title=\"По центру\"></a> </td> <td> <a onclick=\"insertTags('[align=right]','[/align]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/right.gif\" border=\"0\" alt=\"Текст справа\" title=\"Текст справа\"></a> </td> <td> </td> <td> <a onclick=\"insertTags('[list=1]\r\n[*]Раз\r\n[*]Два\r\n','[/list]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/spisok.gif\" border=\"0\" alt=\"Список\" title=\"Список\"></a> </td> <td> <a onclick=\"insertTags('[url=sykt24.ru target=new]','[/url]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/url.gif\" border=\"0\" alt=\"Вставить Ссылку\" title=\"Вставить ссылку\"></a> </td> <td> <a onclick=\"insertTags('[email]','[/email]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/email.gif\" border=\"0\" alt=\"Почтовый ящик\" title=\"Почтовый ящик\"></a> </td> <td> </td> <td> <a onclick=\"insertTags('[img]','[/img]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/image.gif\" border=\"0\" alt=\"Добавить изображение\" title=\"Добавить изображение\"></a> </td> <td> <a onclick=\"insertTags('[font=tahoma color=red size=-1]','[/font]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/big.gif\" border=\"0\" alt=\"Выделение красным\" title=\"Выделение красным\"></a> </td> <td> <a onclick=\"insertTags('[mp3]','[/mp3]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/mp3.gif\" border=\"0\" alt=\"mp3 файл\" title=\"mp3 файл\"></a> </td> <td> <a href=\"#TB_inline?height=405&width=606&inlineId=tag_grid_container\" class=\"thickbox\"><img src=\"http://img.sykt24.ru/sykt24/knop/smail.gif\" border=\"0\" alt=\"Архив Смайликов\" title=\"Архив Смайликов\"></a> </td> <td> <a onclick=\"insertTags('[flash]','[/flash]','');return false\" href=\"#\"><img src=\"http://img.sykt24.ru/sykt24/knop/youtube.gif\" border=\"0\" alt=\"Флэш и видио из ютуб \" title=\"Флэш и видио из ютуб\"></a> </td> <td> <a href=\"javascript:window.open('upload.php','raions','copyhistory=no, directories=no, location=no, toolbar=no, menubar=no, status=no, scrollbars=no, resizable=no ,width=400,height=100');void(0);\"><img title=\"Загрузить изображение\" border=0 src=\"http://img.sykt24.ru/sykt24/knop/upload.gif\"></a> </td> </tr> </table> </td> </tr> <tr> <td align=\"left\" style=\"padding-left: 5px;\"> <div id=\"yessmail\"></div> </td> </tr> <tr> <td align=\"left\" style=\"padding-left: 5px;\"> <div id=\"yessmail2\"></div> </td> </tr> <tr> <td bgcolor=\"#FFFFFF\" style=\"padding: 5px 5px 5px 10px;\" width=\"48%\"> <a name=\"textarea\"></a><textarea rows=\"11\" id=\"textarea\" name=\"text\" cols=\"53\" style=\"color: #000000; border: 1px solid #333; background-color: #F5F5F5\">"; if(trim($admin_mod_edit['text'])!=""){ $body.=$admin_mod_edit['text']; } $body.="</textarea> <table> <tr> <td> <input type=\"submit\" name=\"submit\" value=\"Опубликовать\"> </td> </tr> </table> </td> <td valign=top> <div id=\"tag_grid_container\" style=\"overflow: hidden;display: none;\"> <div id=\"tag_grid_crop\"> "; //Определение и показ смайликов $file=file("smilies/Set_Smiles_YarNET.pak"); for($i="0";$i<count($file);$i++){ $ex=explode("=+:",$file[$i]); //$ex['2']=eregi_replace("/n","",$ex['2']); $body.="<a onclick=\"insertTags('".trim($ex['2'])."','','');return false\" href=\"#\"><img style=\"border: solid 0px red;\" src=\"smilies/".$ex['0']."\" alt=\"".$ex['1']."\"></a>"; } $body.="</div> </div> </td> </tr> </table> </td> </tr> </table> </form>"; }else{ $body.='<span style="color: red;"> Чтобы писать в гостевой книге, необходимо Войти, или, если вы не зарегистрированы, то <a href="/guestbook/?mod=reg">Зарегистрироваться</a> </span><br /> <form action="" method="post"><center><input type="text" name="login" /><input type="password" name="password" /><input type="submit" value="Войти" /></center></form>'; } } //показываем сообщения пользователей $result_admin_mod=mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `text_guest` LEFT JOIN `users_guest` ON (`text_guest`.`users`=`users_guest`.`id`) ".$where." ORDER BY `text_guest`.`id` DESC LIMIT ".$limit.",20"); $cnt_all_result = mysql_query('SELECT FOUND_ROWS() as count'); $unlim_num_rows = mysql_result($cnt_all_result,0,'count'); $unlim_num_rows=$unlim_num_rows/20; $unlim_num_rows= ceil($unlim_num_rows); include("bbcode.lib.php"); // Формируем набор смайликов $pak = file('smilies/Set_Smiles_YarNET.pak'); $smiles = array(); foreach ( $pak as $val ) { $val = trim($val); if (! $val || '#' == $val{0}) { continue; } list($gif,$alt,$symbol) = explode('=+:',$val); $smiles[$symbol] = '<img src="smilies/'.htmlspecialchars($gif).'" alt="'.htmlspecialchars($alt).'" />'; } // Создаем объект и распарсиваем $text while($admin_mod=mysql_fetch_array($result_admin_mod)): $body.='<div> <table style="width: 100%;"><tr><td> <b><a href="?mod=user&user='.$admin_mod['users'].'">'.$admin_mod['login'].'</a></b> <a onclick="insertTags(\'[quote]\',\'[/quote]\',\''.$admin_mod['login'].' писал(а):\');return false" href="#"><img src="img/switch.png" style="border: 0px solid red; vertical-align: middle;" border="0" alt="Цитировать" title="Цитировать"></a>'; if($admin_mod['users']==$users['id'] || $users['status']=="2"){ $body.='<a href="/guestbook/?mod=guestbook&edit='.$admin_mod['0'].'"><img src="img/wrench_pencil.png" alt="" style="border: 0px solid red; vertical-align: middle;" /></a>'; } if($admin_mod['users']==$users['id'] || $users['status']=="2"){ $body.='<a href="/guestbook/?mod=guestbook&del='.$admin_mod['0'].'"><img src="img/wrench_minus.png" alt="" style="border: 0px solid red; vertical-align: middle;" /></a>'; } $body.='</td><td style="text-align: right;"><span style="font: 11px Tahoma;">'.date("H:i d.m.Y",$admin_mod['time']).'</span></td></tr></table><div style="margin: 5px; padding: 5px; background: #c0c0c0;">'; $bb1 = new bbcode($admin_mod['text']); // Задаем набор смайликов $bb1 -> mnemonics = $smiles; // Конвертируем BBCode в HTML и выводим его $body.=$bb1 -> get_html(); $body.='</div></div>'; endwhile; if($unlim_num_rows>"1"){ if(isset($_GET['user'])){ $use='&user='.$_GET['user']; }else{ $use=""; } $body.=page_num("/guestbook/?mod=guestbook".$use."&str=",$unlim_num_rows,$str); } //Рисуем место для ввода сообщения если чувак активирован ; } if($_GET['mod']=="reg"){ $login=""; $password=""; $fullname=""; $city=""; $mail=""; $icq=""; $me=""; if(isset($_POST['submit'])){ $login=badcode("sub",$_POST['login']); $password=md5(badcode("sub",$_POST['password'])); $pass=badcode("sub",$_POST['password']); $fullname=badcode("sub",$_POST['fullname']); $city=badcode("sub",$_POST['city']); $mail=badcode("sub",$_POST['mail']); $icq=badcode("sub",$_POST['icq']); $me=badcode("sub",$_POST['me']); if(!preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $mail)){ $body.='<span style="color: red;">Поле "E-mail" должно соответствовать формату [email=somebody@somewhere.ru]somebody@somewhere.ru[/email]</span><br />'; $bad="1"; } if(trim($login)=="" || trim($password)==""){ $body.='<span style="color: red;">Логин и пароль должны быть обязательно указаны</span>'; $bad="1"; } if(!isset($bad)){ if(mysql_query("INSERT INTO `users_guest` ( `id` , `login` , `password` , `fullname` , `city` , `mail` , `icq` , `me` , `status` )VALUES ('', '$login', '$password', '$fullname', '$city', '$mail', '$icq', '$me', '1')")){ $time=time()+2592000; setcookie ("login", $login,$time); setcookie ("password", $password,$time); //setcookie ("TestCookie", "2s",time()+3600); mail($mail,"Регистрация в гостевой книге","Спасибо! Вы удачно зарегистрировались в гостевой книге на сайте ".$_SERVER['HTTP_HOST'].". Ваш логин ".$login.", и пароль ".$pass."!"); //$body.='<span style="color: green;">Вы удачно зарегистрированы <a href="/index.php?section=guestbook">перейти в гостевую</a>.</span>'; header("Location: /guestbook/?mod=guestbook"); $login=""; $password=""; $fullname=""; $city=""; $mail=""; $icq=""; $me=""; }else{ $body.='<span style="color: red;">Ошибка придобавлении пользователя. Обратитесь к разработчикам.</span>'; } } } $body.='<form action="" method="post"> <h1>Регистрация</h1> <table> <tr><td><b>Ник</b></td><td><input type="text" name="login" value="'.$login.'" /></td></tr> <tr><td><b>Пароль</b></td><td><input type="password" name="password" /></td></tr> <tr><td><b>Настоящее имя</b></td><td><input type="text" name="fullname" value="'.$fullname.'" /></td></tr> <tr><td><b>Населённый пункт</b></td><td><input type="text" name="city" value="'.$city.'" /></td></tr> <tr><td><b>Электронный ящик</b></td><td><input type="text" name="mail" value="'.$mail.'" /></td></tr> <tr><td><b>ICQ</b></td><td><input type="text" name="icq" value="'.$icq.'" /></td></tr> <tr><td><b>О себе</b></td><td><textarea name="me">'.$login.'</textarea></td></tr> <tr><td></td><td><input type="submit" name="submit" value="Зарегистрироваться" /></td></tr> </table> </form>'; } if(!isset($_GET['mod'])){ header("Location: /guestbook/?mod=guestbook"); } ?> P.S. Прошу извенить если что неправильно оформил.
PHP: error_reporting(E_ALL); ini_set('display_errors', 1); http://www.php.net/manual/en/function.e ... orting.php http://www.php.net/manual/en/function.ini-set.php
slav_sanch маньяков нет. запускайте, генерируйте обшибастый случай. лезте в лог, копируйте ошибку сюда, а потом в гугл. бум думать.
Вот какие ошибки вывелись: В принципе как я и предпологал не заданы переменные дел и едит. Я просто с пхп не часто общался, и поэтому не был уверен точно. Может быть кто нибудь сможет подсказать как их правильно задать нужно? Ну и заодно как с остальными ошибками можно справиться. Буду премного благодарен .
скорее всего у вас сервер настроен с register global off. замените PHP: mysql_query("INSERT INTO `text_guest` ( `id` , `users` , `text` , `ip` , `time`)VALUES ('', '".$users['id']."', '".$text."', '".$_SERVER['REMOTE_ADDR']."', '".$timer."')") на PHP: mysql_query("INSERT INTO `text_guest` ( `id` , `users` , `text` , `ip` , `time`)VALUES ('', '".$users['id']."', '".$_POST['text']."', '".$_SERVER['REMOTE_ADDR']."', '".$timer."')")
Потише на поворотах, он же так всей базы лишится! это раз. а два - почему другие переменные у него тогда получили свое содержимое, а текст - не получил?
Огромнейшее вам спасибо xamelion. Заработало . Нельзя ли ссылочку или хотя бы вкратце рассказать, что это за register global off и с чем его едят . igordata почему я лишусь всей базы? Тоже если можно поподробнее . И как не странно другие переменные действительно записывались, но способ помог.
xamelion скрипт жуткий. опасный. переписывать надо. весь. не пожадничайте. 1000 рублей заплатите комунить из местных. они вам напишут с проверкой и защитой. То что даже запросив страницу можно убить базу - это не порядок. то, что получается от юзера - содержимое $_POST и $_GET - должно экранироваться! =) Просто так совать в запросы в чистом виде то, что пришло извне - нельзя ни при каких условиях.
xamelion пример хоть и рабочий, но за такое по рукам надо плеткой)) Щас бы Luge затюкал бы что без проверок код выкладывают
Скрипт написан был давно. Проект не коммерческий . Переписывать код... Вряд ли смогу. Написать новый можно. Благо примеров куча. Но при этом нужно сохранить все сообщения которые есть. Время нужно, а его как всегда не много . База автоматически сохраняется каждые два дня. Поэтому пусть будет так.
Насколько я что-то понимаю эта строчка у нас в сообщении убирает все знаки " ' ". Так что в любом запросе с гостевой эти значечечки убираются, а без них код становится не рабочим. Хотя я может конечно ошибаюсь... говорю же молодой еще зеленый...
Чтобы экранировать параметры используйте addslashes(). register global если он включен, то $_POST['type'] $_GET['type'] и $type Это одна и та же переменная. если же выключен то это будут разные переменные. Что-то типа того.
Есть ошибка в строке 80: if(mysql_query("INSERT INTO `text_guest` ( `id` , `users` , `text` , `ip` , `time`)VALUES ('', '".$users['id']."', '".$text."', '".$_SERVER['REMOTE_ADDR']."', '".$timer."')")){ Работает, когда if(mysql_query("INSERT INTO `text_guest` ( `id` , `users` , `text` , `ip` , `time`)VALUES (' ".$users['id']."', '".$text."', '".$_SERVER['REMOTE_ADDR']."', '".$timer."')")){