Теперь сделал, отличьно работает, теперь думаю надо идти в Обработку изображений средствами ПХП и думать как сделать более замудреный рисунок. Но вот еще один вопрос. Я тут увидил такое. http://www.nazcaweb.net/support.php. Можно отослать сообщения в аську прямо с сайта? Как это реализовать. Всем большое спаибо за помощь.
А нет вот еще. Сесия создается и картинка генерируется с цифрами, но когда я жму субмит, на следующей странице сессии нету!? Где она, в форме стоит так: <form action="Notice.php" method="post"> Может надо ссылку поменять или еще чтото сделать?
Да но теперь вот что еще: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Notice.php:9) in C:\Notice.php on line 13 61333620 Пишет ошибку но контрольное число из сесии показывает.
Вот такая ситуайия все работает, за исключением малейшей глупости. Еслия ввожу неверное число, то мне пишет ошибку, вы ввели неверное число, но при обновлении страницы скрипта, Сессии придается значение того числа которое я ввел в POST. Т.е. если $_SESSION['Number'] = "1234"; А я ввел 4321, то напишет ошибку, но при обновлении $_SESSION['Number'] приобретет значение 4321, какбудто сессия на один шаг отстает от того что я пишу.
Скрипты оченьдлинные я дам только касающее теме. Форма для запалнения: Код (Text): <form action="Notice.php" method="post"><img src="Image.php"><input name="Number" type="text" size="20"></form> Image.php (Скрипт генерации изображения) PHP: <?php session_start (); $_SESSION['Number'] = mt_rand (0000000, 99999999); $img = imagecreatetruecolor(130, 30); $white = imagecolorallocate($img, 255, 255, 255); $red = imagecolorallocate($img, 255, 0, 0); $green = imagecolorallocate($img, 0, 255, 0); $blue = imagecolorallocate($img, 0, 0, 255); $random_color = imagecolorallocate($img, rand(180,240), rand(180,240), rand(180,240)); imagestring($img, 5, rand(0,50), rand(0,15), $_SESSION['Number'], $random_color); header('Content-type: image/jpeg'); imagejpeg($img); ?> Скрипт регистрации. Запускается при нажатии Субмит (Notice.php): Код (Text): <?php session_start(); echo $_SESSION['Number']."<br>"; echo $_POST['Number']; ?> При активации скрипта там где сесия напишет число которое сгенерировалось и записалось в сесию Number, а там где POST, число которое ввел пользователь. При обновлении скрипта, число сессии приобритает значение поста.
У меня нету Аськи, только скайп, ник: xak3pp. Я вообще для провреки из файла Notice.php убрал все и записал туда: PHP: <?php session_start(); echo $_SESSION['Number']."<br>"; echo $_POST['Number']; ?> Нигде на страницах нет сравнения, но при обновление $_SESSION['Number'] получает значение $_POST['Number']. Не может ли это быть изза одинаковых имен Number?
ты нажимаешь F5, подтверждаешь переотправку данных и у тебя ДВА раза печатается чисто которое в $_POST['Number']?
просто фишка в том, что в этом случае не выводится никакого сообщения об ошибке.. просто поиском ищи все if/elseif и смотри, что у тебя в условиях.
Переменная $_SESSION['Number'] только один раз упомянута в скрипте, как и $_POST['Number']. С помощью if/elseif проверял. Только что скопировал файлы убрал все лишнее некасающееся сессии и заработало как надо. Буду пытаться найти чтото в файлах.
Запарило, в скрипте ничего неработает, я переименовал POST Number в CAPTCHA, убрал проверку и сравнение, убрал присвоения, но всеравно сесия при обновлении присваивает введенное число а не из сессии. Вот все файлы целиком: Form.php: PHP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="Style.css" rel="stylesheet" type="text/css" /> </head> <body topmargin="0" leftmargin="0"> <div align="center"> <form action="Notice.php" method="post"> <table cellpadding="0" cellspacing="0" width="97%" class="Top"> <tr> <td> </td> </tr> <tr> <td style="margin-bottom: 5px"> <b>Кому сообщение:</b> </td> </tr> <tr> <td style="margin-left: 30px"> <select name="MassageTo" size="1"> <option value="Administration">Администратору</option> <option value="SupportService">Службе поддержки</option> <option value="Manager">Менеджеру</option> <option value="AdvertisingAgent">Рекламному агенту</option> </select> </td> </tr> <tr> <td style="margin-top: 10px; margin-bottom: 5px"> <b>Тип отправляемого сообщения:</b> </td> </tr> <tr> <td style="margin-left: 30px"> <input type="radio" name="MassageType" value="Вопрос" checked> Вопрос <input type="radio" name="MassageType" value="Предложение"> Предложение <input type="radio" name="MassageType" value="Благодарность"> Благодарность <input type="radio" name="MassageType" value="Жалоба"> Жалоба </td> </tr> <tr> <td style="margin-top: 10px; margin-bottom: 5px"> <b>Тема сообщения:</b> </td> </tr> <tr> <td style="margin-left: 30px"> <input name="MassageTitle" type="text" id="MassageTitle" size="25"> </td> </tr> <tr> <td style="margin-top: 10px; margin-bottom: 5px"> <b>Введите текст сообщения в следующее поле:</b> </td> </tr> <tr> <td style="margin-left: 30px"> <textarea name="Massage" cols="50" rows="5" id="Massage"></textarea><br> <input type="checkbox" name="sms"> SMS <input type="checkbox" name="icq"> ICQ <input type="checkbox" name="e-mail" checked> E-mail </td> </tr> <tr> <td style="margin-top: 10px; margin-bottom: 5px"> <b>Как с вами связаться?</b> </td> </tr> <tr> <td> <dl> <dd> <table> <tr> <td> Имя: </td> <td> <input name="Name" type="text" size="20"></td> </tr> <tr> <td> Эл. адрес: </td> <td> <input name="Mail" type="text" size="20"></td> </tr> <tr> <td> </td> </tr> <tr> <td><img src="Image.php"></td> <td> <input name="CAPTCHA" type="text" size="7" maxlength="7"></td> </tr> <tr> <td> </td> </tr> </table> <input type="checkbox" name="SendCopy" value="1"> Отправить мне копию письма.<br /> <input type="checkbox" name="Important" value="1"> Свяжитесь со мной по данному вопросу как можно быстрее.<br /> <input type="Submit"> <input type="Reset"></dd> </dl></td> </tr> </table> </form> </div> </body> </html> Notice.php: PHP: <?php session_start(); include("Config.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="Style.css" rel="stylesheet" type="text/css" /> </head> <body topmargin="0" leftmargin="0"> <div align="center"> <table cellpadding="0" cellspacing="0" border="0" width="97%"> <tr> <td> <?php echo $_SESSION['Number']." ".$_POST['CAPTCHA']; if (!empty($_POST['MassageTitle']) && !empty($_POST['Massage']) && !empty($_POST['Name']) && !empty($_POST['Mail']) && !empty($_POST['CAPTCHA'])) { $MassageTitle = htmlspecialchars($_POST['MassageTitle'], ENT_QUOTES); $Massage = htmlspecialchars($_POST['Massage'], ENT_QUOTES); $Name = htmlspecialchars($_POST['Name'], ENT_QUOTES); $Mail = htmlspecialchars($_POST['Mail'], ENT_QUOTES); $Number = htmlspecialchars($_POST['CAPTCHA'], ENT_QUOTES); $MassageType = $_POST['MassageType']; /*if ($_SESSION['Number'] == $Number) { */ if ($_POST['MassageTo'] == "Administration") $MassageTo = "Администратор"; $MailTo = $AdministrationMail; if ($_POST['MassageTo'] == "SupportService") $MassageTo = "Службе поддержки"; $MailTo = $SupportServiceMail; if ($_POST['MassageTo'] == "Manager") $MassageTo = "Менеджер"; $MailTo = $ManagerMail; if ($_POST['MassageTo'] == "AdvertisingAgent") $MassageTo = "Рекламный агент"; $MailTo = $AdvertisingAgentMail; if ($_POST['Important'] == "1") { $Important = " Важно!"; $IfImportant = "<br><br>Мы свяжемся с вами в течении 12 часов!"; $IfImportantAdmin = "<br><br>Ответить в течении 12 часов!"; } $SendMassage = "Тема |".$Important." ".$MassageType.": ".$MassageTitle."<br><br>".$Massage."<br><br>---------------<br>Прислал: ".$Name."<br>Эл. адрес: ".$Mail."<br>---------------".$IfImportantAdmin; echo $SendMassage."<br><br><hr>"; mail($MailTo,$Mail,$SendMassage); if (!empty($_POST['SendCopy'])) { $MassageCopy = "Тема | Копия:".$Important." ".$MassageType.": ".$MassageTitle."<br><br>".$Massage."<br><br>---------------<br>Прислал: ".$Name."<br>Эл. адрес: ".$Mail."<br>---------------".$IfImportant."<br><br>С уважением, ".$MassageTo."!<br>---------------<br>САЙТ: [url=http://www.domen.com]www.domen.com[/url]<br>E-MAIL: [email=support@domen.com]support@domen.com[/email]<br>ICQ: 123456789<br>---------------"; echo $MassageCopy; mail("xak2@one.lv",$Mail,$MassageCopy); } /*} else { echo "<b>Вы ввели неверное контрольное число!</b>"; }*/ } else { echo "<b>ОШИБКА:</b><br /><br />"; if (empty($_POST['MassageTitle'])) { echo "Вы незаполнили поле "<b>Тема сообщения</b>"!<br />"; } if (empty($_POST['Massage'])) { echo "Вы незаполнили поле "<b>Текст сообщения</b>"!<br />"; } if (empty($_POST['Name'])) { echo "Вы незаполнили поле "<b>Имя</b>"!<br />"; } if (empty($_POST['Mail'])) { echo "Вы незаполнили поле "<b>Эл. адрес</b>"!<br />"; } if (empty($_POST['CAPTCHA'])) { echo "Вы незаполнили поле "<b>Контрольное число</b>"!<br />"; } } ?> </td> </tr> </table> </div> </body> </html> Image.php: PHP: <?php session_start(); $_SESSION['Number'] = mt_rand(0000000, 9999999); $img = imagecreatetruecolor(130, 30); $white = imagecolorallocate($img, 255, 255, 255); $red = imagecolorallocate($img, 255, 0, 0); $green = imagecolorallocate($img, 0, 255, 0); $blue = imagecolorallocate($img, 0, 0, 255); $random_color = imagecolorallocate($img, rand(180,240), rand(180,240), rand(180,240)); $random_x = rand(0,50); $random_y = rand(0,15); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $red); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $red); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $red); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $green); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $green); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $green); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $blue); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $blue); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $blue); imageellipse($img, 10, 10, 50, 50, $red); imageellipse($img, 50, 50, 50, 50, $green); imageellipse($img, 100, 100, 50, 50, $blue); imagestring($img, 5, $random_x, $random_y, $_SESSION['Number'], $random_color); imageellipse($img, 20, 20, 50, 50, $red); imageellipse($img, 60, 600, 50, 50, $green); imageellipse($img, 90, 90, 50, 50, $blue); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $red); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $red); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $red); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $green); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $green); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $green); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $blue); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $blue); imageellipse($img, rand(0,110), rand(0,40), 50, 50, $blue); header('Content-type: image/jpeg'); imagejpeg($img); ?> Попробуйте найти, где что ни так, меня уже выводит из себя этот скрипт.
ЗЫ. Ошибок много. Разнеси код по фукциям, структурируй лучше. Смотреть и искать счас там ошибки — нереально. Раздели! Раздели логику от представления.