Всем привет. Если что-то не так, заранее прошу извинить.Я не в курсе есть ли на самом деле такие страницы, но я их придумал в качестве примера - h ttp: //w ww.1.ru/feedback.php и h ttp: //w ww.1.ru/letsgo.php. Вопрос не скромный. Есть форма (скажем на h ttp: //w ww.1.ru/feedback.php ) и есть файлик php, который обрабатывает форму и выводит необходимые сообщения, но ни как не могу понять, почему если в форме не заполнено одно поле то файлик php выводит нужное сообщение и автоматом выкидывает на иную страницу - на h ttp: //w ww.1.ru/letsgo.php, а должно автоматом выкидывать на h ttp: //w ww.1.ru/1.php. Т.е., если что-то не заполнено, то должно выдавать сообщение, что не заполнено "..." и автоматом возвращать на форму, а не выкидывать автоматом на следующую страницу. На всякий случай привожу полный код обработчика. Код (Text): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="refresh" content="10; url=http://www.1.ru/letsgo.php/"> <title>Feedbackform</title> </head> <body> <div align="center"> <table border="0" cellspacing="0" cellpadding="20" width="650"> <tr> <td align="center"> <p style="color: blue; font-size: 20px;"> <?php /* Здесь проверяется существование переменных */ if (isset($_POST['name1'])) {$name1 = $_POST['name1'];} if (isset($_POST['name2'])) {$name2 = $_POST['name2'];} if (isset($_POST['name3'])) {$name3 = $_POST['name3'];} if (isset($_POST['email'])) {$email = $_POST['email'];} if (isset($_POST['tel'])) {$tel = $_POST['tel'];} if (isset($_POST['pravo'])) {$pravo = $_POST['pravo'];} if (isset($_POST['body'])) {$body = $_POST['body'];} /* Сюда впишите свою эл. почту */ $address = "questions@www.1.ru"; /* А здесь прописывается текст сообщения, \n - перенос строки */ $mes = "Фамилия: $name1 \nИмя: $name2 \nОтчество: $name3 \nE-mail: $email \nТелефон для связи: $tel \nВопрос о: $pravo \nКомментарий: $body"; /* А эта функция как раз занимается отправкой письма на указанный вами email */ $send = mail ($address,$pravo,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email"); /* А эта функция занимается обработкой введённых данных в форме перед отправкой письма на указанный вами email */ if (empty($name1)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана фамилия!</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxxx.ru/partners/200x300.gif' alt='XXX' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } if (empty($name2)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано имя!</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } if (empty($name3)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано отчество!</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } else if (empty($email)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан e-mail!</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } else if (empty($tel)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан телефон!</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } else if (empty($pravo)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана тема вопроса!</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } else if (empty($body)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Вы забыли написать комментарий?</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } else /* А эта функция занимается выводом сообщения на экран после верного заполнения формы обратной связи и ошибки отправки сообщения */ if ($send == 'true') { echo $a = "<a href='http://www.1.ru/letsgo'><img src='http://xxx.ru/feedbackmess/image/xxx(500x221).png' border=0 title='Перейти'></a><br>\n<br>\nВаша заявка принята.<br>\nСообщение успешно отправлено.<br><br>\nВы будете перенаправлены на форму оплаты в течении 10 секунд.<br>\n<br>\nЕсли не хотите ждать, а хотите перейти к оплате сразу,<br>\n <a href='http://www.1.ru/letsgo>нажмите на эту ссылку</a>.<br>\n <img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'>"; } else { echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости что-то и где-то пошло не совсем так как надо.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; } ?> </p> </td> </tr> </table> </div> </body> </html> Вы меня извините ещё раз, но не особо я дружу с PHP, HTML с юриспруденцией мне гораздо ближе... А ещё, жуть как интересно, как сделать подтверждение авторизации как на этом форуме. Очень порадовало. Админ, свяжись со мною. плиз.
Re: Не понимаю почему не так... Код нечитаемый... Совет - наймите фрилансера, он вам всё сделает... Если хотите делать сами, то придётся освоить программирование php на том же уровне, что юриспруденцию. Пока вы "не особо дружите с php", советы вам не сильно помогут.
Re: Не понимаю почему не так... Да где же найти такого молодца, чтобы не подвёл бы? Был опыт печален, вот теперь сам разбираюсь. Ну, а коль брать фрилансера (ненавижу эти слова взаимствованные из англ.) на то, чтобы он показал мою ошибку в этом коде и отдать кучу денег за это... На мой взгляд это равноценно, как отдать на заправке кучу денег человеку, который тебе поставит пистолет АЗС в горловину бака твоего авто... А переделывать целиком весь сайт - пока нет необходимости. Если бы я был заинтересован в поиске конкретного работника (фрилансера) на полную переделку сайта - то нанял бы его на работу, и здесь меня уж точно не было бы. Я прошу просто помочь, как часто помогаю людям и сам. Творить добрые дела всегда приятно.
Re: Не понимаю почему не так... ты привел код некой страницы, там отсылается письмо(всегда) и генерится куча сообщений об ошибках. никаких перенаправлений на другие страницы, или форм там нет. т.е. описанная проблема в другом скрипте, похоже. если так, давай его код.
Re: Не понимаю почему не так... Ну а о чём говорить, если вы всё равно не поймёте? Вот у вас в коде, сначала письмо отправляется, а потом проверяется, все ли необходимые поля заполнил человек. Вроде нужно по-другому делать... Во-вторых, в по хорошему, в скрипте отправки не должно быть никакого HTML - там должен быть только код проверки корректности введённых данных и отправки письма. После чего этот скрипт должен в сессию записать факт успешной отправки или найденные ошибки, и переадресовать браузер на другую страницу, либо с сообщением об успехе, либо с формой с подсвеченными полями и ошибками. Так что, по меньшей мере эту часть сайта точно надо переписать полностью. С подтверждением регистрации через e-mail - это не сложно делается, и объяснить не трудно, если человек хоть немного в теме....
Re: Не понимаю что не так с обработкой формы обратной связи. а все нашел. на странице есть строка <meta http-equiv="refresh" content="10; url=http://www.1.ru/letsgo.php/"> вот она через 10 секунд и кидает посетителя на letsgo.php
Re: Не понимаю что не так с обработкой формы обратной связи. Я особо не думал, что эта строка сильно повлияет, если будет выводиться код об ошибке заполнения, но предполагал это. А как мне сделать чтобы было так как надо?
Re: Не понимаю что не так с обработкой формы обратной связи. не выводи перенаправление когда есть ошибки, или как надо?
Re: Не понимаю что не так с обработкой формы обратной связи. эту строку точно убрать. такие вещи делаются логикой на пхп. это уже отдельный вопрос. несложный, но требующий времени на реализацию. начнешь делать - подскажем.
Re: Не понимаю что не так с обработкой формы обратной связи. legal, у вас письмо уходит в любом случае, и при ошибках, и когда всё правильно. Я же написал. Вы сначала отправляете письмо, а потом пишите всю вашу галиматью по поводу проверок: Код (Text): /* А эта функция как раз занимается отправкой письма на указанный вами email */ $send = mail ($address,$pravo,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email"); // Всё, письмо уже ушло, ну и какого фига всё это проверять? /* А эта функция занимается обработкой введённых данных в форме перед отправкой письма на указанный вами email */ if (empty($name1)) { echo "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана фамилия!</b></span></p>"; echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxxx.ru/partners/200x300.gif' alt='XXX' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости вы что-то и где-то не указали в форме.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; exit; } Ну и я уже написал, и runcore ещё раз тоже самое написал, не так это должно делаться. Делается через сессии, https://php.net/manual/ru/book.session.php
Re: Не понимаю что не так с обработкой формы обратной связи. А вы для начала попробуйте поговорить, а потом уж делайте выводы, пойму ли я вас или нет. У людей есть язык с помощью которого они разговаривают и голова с мозгами благодаря которой люди находят общий язык во время общения. Во всяком случае, когда мне приходится общаться с людьми не знающими юриспруденцию, я стараюсь говорить на их языке и в большинстве случаев мне это удаётся. Удастся ли у вас. Пока не знаю. Весьма насторожило меня ваша фраза: Не соглашусь с вашим мнением по поводу: От части возможно и соглашусь с Вами, но после переадресации мы видим страницу с красиво оформленным сообщением об успехе или ошибке и это всё благодаря этому коду в одном файле. Другое дело, если переадресованная страница со сведениями об успехе или ошибке должна быть на общем фоне этого сайта, т.е. в первом случае белый фон и слова " всё хорошо и вас сейчас автоматом перекинет на нужную страницу" или тоже самое, но в конкретном месте на конкретной странице сайта без его визуального изменения. Данный код взят из одного файла, который после успеха введённых всех данных в форме работает как надо (правда выводится не на общем фоне этого сайта, а на белой странице), а вот когда не введено одно из полей... от части ведёт себя как надо, т.е. говорит что не так и отсылает всё равно как будто всё введено правильно. А мне нужно чтобы он отсылал обратно к форме.
Re: Не понимаю что не так с обработкой формы обратной связи. есть там строка $send = mail ($address,$pravo,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email"); она посылает письмо. так вот. ОНА ВЫПОЛНЯЕТСЯ ВСЕГДА. даже если чегото не ввели в форму. и текст ошибок по сути ничего не меняет. письмо то уже ушло.
Re: Не понимаю что не так с обработкой формы обратной связи. Вот как мне сделать так, чтобы проверил - поле не введено и отправил через 10 секунд посетителя обратно к форме. Какой код написать? Добавлено спустя 16 минут 13 секунд: Re: Не понимаю что не так с обработкой формы обратной связи... На сколько я понимаю, через сессии это всё хорошо, но по всей видимости сильно нагружает сервер... и могут возникнуть проблемы с хостером...
Радости прибавилось, так как теперь неправильные письма не отправляются. Это всё по-другому надо писать. Как - я уже указал. Для этого надо и часть, выводящую форму сменить, и этот скрипт. В таком виде его править смысла нет - всё равно нормально работать не будет. Должно быть примерно так, если вы уж сами прочитать ленитесь: Код (PHP): session_start(); $errors = array (); if (empty ($_POST["name1"])) $errors = "Заполните имя"; // Далее идут все остальные проверки // Если после всех проверок массив $errors остался пустой, отправляем письмо и переадресуем пользователя на страницу с успехом if (empty($errors)) { /* здесь идёт подготовка письма - ну это у вас в скрипте имеется */ mail(/* ну тут вы и сами знаете, что должно быть */); header("Location: success.php"); die; } // Если дошли до этого места, значит форма заполнена неверно. Сохраняем в сессию ошибки, сохраняем в сессию введённые данные, // Чтоб пользователю не пришлось вводить заново то, что введено верно, и отправляем пользователя снова заполнять форму $_SESSION["errors"] = $errors; $_SESSION["form_data"] = $_POST; header("Location: /feedback.php"); Как изменить код формы, может напишу чуть позже, если сами не догадаетесь.
попробуйте это Код (PHP): <?php define('URL_FEEDBACK', 'http://www.1.ru/feedback.php'); define('URL_LETSGO', 'http://www.1.ru/letsgo.php'); $name1=$name2=$name3=$email=$tel=$pravo=$body=''; /* Здесь проверяется существование переменных */ if (isset($_POST['name1'])) {$name1 = $_POST['name1'];} if (isset($_POST['name2'])) {$name2 = $_POST['name2'];} if (isset($_POST['name3'])) {$name3 = $_POST['name3'];} if (isset($_POST['email'])) {$email = $_POST['email'];} if (isset($_POST['tel'])) {$tel = $_POST['tel'];} if (isset($_POST['pravo'])) {$pravo = $_POST['pravo'];} if (isset($_POST['body'])) {$body = $_POST['body'];} $err = array(); // ошибки /* А эта функция занимается обработкой введённых данных в форме перед отправкой письма на указанный вами email */ if (empty($name1)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана фамилия!</b></span></p>"; } if (empty($name2)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано имя!</b></span></p>"; } if (empty($name3)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указано отчество!</b></span></p>"; } if (empty($email)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан e-mail!</b></span></p>"; } if (empty($tel)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указан телефон!</b></span></p>"; } if (empty($pravo)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Не указана тема вопроса!</b></span></p>"; } if (empty($body)) { $err[]= "<p><span style='text-align: center; font-size: 15px; color: red;'><b>Вы забыли написать комментарий?</b></span></p>"; } /* если НЕТ ошибок */ if (sizeof($err)==0) { /* Сюда впишите свою эл. почту */ $address = "questions@www.1.ru"; /* А здесь прописывается текст сообщения, \n - перенос строки */ $mes = "Фамилия: $name1 \nИмя: $name2 \nОтчество: $name3 \nE-mail: $email \nТелефон для связи: $tel \nВопрос о: $pravo \nКомментарий: $body"; /* А эта функция как раз занимается отправкой письма на указанный вами email */ $send = mail ($address,$pravo,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php if (sizeof($err)==0) { // no error ?> <meta http-equiv="refresh" content="10; url=<?php echo URL_LETSGO;?>"> <?php } else { // error ?> <meta http-equiv="refresh" content="10; url=<?php echo URL_FEEDBACK;?>"> <?php } ?> <title>Feedbackform</title> </head> <body> <div align="center"> <table border="0" cellspacing="0" cellpadding="20" width="650"> <tr> <td align="center"> <p style="color: blue; font-size: 20px;"> <?php if (sizeof($err)>0) { // errors echo join('<br />', $err); echo "<p><span style='text-align: center; font-size: 15px; color: red; text-decoration: underline;'><b>Убедительно просим Вас указывать все данные в форме.</b></span></p>"; } else { // no errors /* А эта функция занимается выводом сообщения на экран после верного заполнения формы обратной связи и ошибки отправки сообщения */ if ($send == 'true') { echo $a = "<a href='http://www.1.ru/letsgo'><img src='http://xxx.ru/feedbackmess/image/xxx(500x221).png' border=0 title='Перейти'></a><br>\n<br>\nВаша заявка принята.<br>\nСообщение успешно отправлено.<br><br>\nВы будете перенаправлены на форму оплаты в течении 10 секунд.<br>\n<br>\nЕсли не хотите ждать, а хотите перейти к оплате сразу,<br>\n <a href='http://www.1.ru/letsgo>нажмите на эту ссылку</a>.<br>\n <img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'>"; } else { echo $a = "<a href='http://www.1.ru/feedback'><img src='http://xxx.ru/feedbackmess/image/xxx.jpg' style='border: 0px solid black; margin: 0px 0px 55px 0px;' width='300' height='190' title='Перейти'></a><img src='http://xxx.ru/partners/200x300.gif' alt='xxx' style='border: 0px solid black;' width='200' height='300'><br>\nК большому разочарованию, Ваше сообщение не отправлено.<BR> По всей видимости что-то и где-то пошло не совсем так как надо.<br>\nВы будете перенаправлены обратно в течении 10 секунд. <br>\nНо вы можете не ждать и самостоятельно вернуться обратно<br>\n просто нажмите <a href='http://www.1.ru/feedback'>сюда</a><br>"; } } ?> </p> </td> </tr> </table> </div> </body> </html>
Re: Не понимаю что не так с обработкой формы обратной связи. Спасибо, большое. Разобрался, доработал малость. Вроде работает всё как часы. Буду рад если данный код поможет ещё кому-нибудь реализовать обработку формы обратной связи. В дополнение к теме, выкладываю свою небольшую форму обратной связи: Код (Text): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Форма обратной связи</title> </head> <style> #Feedbackform /* Стили к самой форме */ { font-family: Arial, 'Times New Roman', Times, serif; sans-serif; /* Говорится, какой шрифт будет использоваться, данном случае Arial */ font-size: 13px; /* Размер шрифта 12 пикселей */ padding: 10px; /* Отступы внутри формы шириной 10 пикселей */ border: 1px solid #ddd; /* Сплошная рамка вокруг формы шириной 1 пиксель и цветом #ddd */ border-top: 0px; /* Говорит, что вверху рамки не должно быть */ width: 470px; /* Ширина 470 пикселей */ border-radius: 5px; background: #eee; /* Фоновый цвет формы #eee */ } .Feedback /* Стили к классу Feedback */ { font-size: 20px; /* Размер шрифта 12 пикселей */ font-family: Times, Helvetica, serif; /* Говорится, какой шрифт будет использоваться, данном случае Arial */ color: #333; /* Цвет текста #333 */ background: #fff; /* Фоновый цвет #fff */ width: 492px; /* Ширина 360 пикселей */ border-radius: 5px; padding: 5px; /* Отступы от всех краев размером 5 пикселей */ border: 1px solid #ddd; /* Сплошная рамка вокруг шириной 1 пиксель и цветом #ddd */ } .input /* Стили для класса input */ { font-family: Times New Roman, Times, serif; font-style: italic; font-size: 13px; text-indent: 10px; text-align: left; color: blue; border-radius: 5px; width: 320px; /* Ширна 320 пикселей */ border: 1px solid #ddd99; /* Сплошная рамка вокруг шириной 1 пиксель и цветом #ddd */ } .textarea /* Стили к тегу textarea */ { font-family: Arial, 'Times New Roman', Times, serif; font-style: italic; font-size: 13px; color: darkgreen; bold; text-indent: 10px; resize: none; padding: 5px; width: 312px; /* Ширина 312 пикселей */ border-radius: 5px; border: 1px solid #ddd99; /* Сплошная рамка вокруг шириной 1 пиксель и цветом #ddd */ } .column /*колонка 1*/ { font-family: Arial, Helvetica, san-serif; text-shadow: 1px 1px 20px grey, 0 0 0em blue; color: black; text-align: center; width: 90px; /* Ширина 230 пикселей */ border: 0px solid #ddd; /* Сплошная рамка вокруг шириной 1 пиксель и цветом #ddd */ } .star { color: #ff0000; /* Красный цвет символов */ font-size: 18px; font-weight: bold; font-family: serif; /* Шрифт с засечками */ position: relative; /* Относительное позиционирование */ } </style> <body> <div align="center"> <div class="Feedback"> <p><b>Заполните данную форму,<br>и мы с вами свяжемся.</b></p> <div id="Feedbackform"> <form name="MyForm" action="/feedbackmess/feedback.php" method="post"> <table> <tr> <td><span class="column">Ваша фамилия:</span></td> <td> <input class="input" name="name1" type="text" size="30" placeholder="Иванов" pattern="[А-Яа-яЁё]{3,}" required maxlength="30"> </td> <td><span class="star">*</span></td> </tr> <tr> <td><span class="column">Ваше имя:</span></td> <td> <input class="input" name="name2" type="text" size="30" placeholder="Иван" pattern="[А-Яа-яЁё]{3,}" required maxlength="30"> </td> <td><span class="star">*</span></td> </tr> <tr> <td><span class="column">Ваше отчество:</span><br></td> <td> <input class="input" name="name3" type="text" size="30" placeholder="Иванович" pattern="[А-Яа-яЁё]{3,}" required maxlength="30"> </td> <td><span class="star">*</span></td> </tr> <tr> <td><span class="column">Эл. почта:</span><br></td> <td> <input class="input" name="email" type="email" size="30" placeholder="ivanov_ii@mail.ru" required maxlength="30"> </td> <td><span class="star">*</span></td> </tr> <tr> <td><span class="column">Конт.телефон:</span><br></td> <td> <input class="input" type="tel" name="tel" pattern="8-[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}" placeholder="образец: 8-903-123-45-67" size="30" required maxlength="20"> </td> <td><span class="star">*</span></td> </tr> <tr> <td><span class="column">Ваш вопрос о:</span></td> <td> <select name="pravo"> <optgroup label=""> <option value="Тема вопроса не определена">Выберете необходимую область</option> </optgroup> <optgroup label="Тема 1"> <option value="Тема 1.1.">Тема 1.1.</option> <option value="Тема 1.2.">Тема 1.2.</option> </optgroup> </select> </td> <td><span class="star">*</span></td> </tr> <tr> <td valign="top"><span class="column">Комментарий:</span></td> <td><textarea class="textarea" name="body" rows="10" cols="70" placeholder="Введите текст вашего сообщения, например: Желательно перезвонить в период с 10:00 до 11:00." maxlength="1000"></textarea><br> </td> </tr> <tr> <td> </td> <td> <p align="center"><span style="font-size: 10px; color: gray;">*Можно ввести не более 1000 символов с учётом пробелов.</span><br> </span></p> </td> </tr> <tr> <td colspan="3"> <p align="center"><span style="font-size: 10px; color: red;">!!! поля помеченные символом - <span class="star"><sub>*</sub></span> - обязательны к заполнению !!!</span></p> </td> </tr> <tr> <td align="left"><input type="reset" value="Очистить поля"></td> <td align="right"><input value="Отправить" type="submit"/></td> </tr> </table> </form> </div> </div> </div> </body> </html>
Re: Не понимаю что не так с обработкой формы обратной связи. Написал небольшую статью про обработку форм. Может, кому-нибудь пригодится. Обработка формы вынесена в отдельный файл, благодаря традиционным редиректом есть защита от повторной отправки данных при обновлении страницы. Также значения верно заполненных полей сохраняются. Код проверял на php 5.5, для php < 5.4 нужно будет новый синтаксис задания массивов заменить на старый. http://kramerblog.net/universal-ny-j-obrabotchik-form-na-php-svoimi-rukami/