Помощник
|
Проблемма с формой обратной связи (send.php) |
alexvdv
|
Сообщение
#1
|
||
|
|
||
|
|||
viktorina |
8.12.2012, 13:46;
Ответить: viktorina
Сообщение
#2
|
|
alexvdv,
Всё работает. Я так понял не нравится вывод сообщений о неправильности, когда всё введено? empty вернёт true , если переменная не задана. if (!empty($name)){blablabla} - вот так выполнится если $name = нигде не определялось. isset($_POST[name]) и остальные всегда = true , так как даже если пользователь ничего не введёт, то $_POST[name] будет равен пустому значению "" . Сообщение отредактировал viktorina - 8.12.2012, 13:53 |
|
|
moto-arena |
8.12.2012, 17:30;
Ответить: moto-arena
Сообщение
#3
|
|
Вы внимательно посмотрите на переменные.
<?php if (isset($_POST['name'])) { $name = $_POST['name']; } if (isset($_POST['phone'])) { $email = $_POST['phone']; } if (isset($_POST['email'])) { $msg = $_POST['email']; } if (isset($_POST['sity'])) { //переменная повторяется $name = $_POST['sity']; } if (isset($_POST['index'])) { $email = $_POST['index']; } if (isset($_POST['adress'])) { //переменная повторяется $msg = $_POST['adress']; } if (isset($_POST['komment'])) { //переменная повторяется $msg = $_POST['komment']; } и которые пытаетесь проверить if (empty($name)) {
echo 'Вы не указали имя! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($phone)) { echo 'Вы не указали номер телефона! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($email)) { echo 'Вы не указали е-майл! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($sity)) { echo 'Вы не указали город! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($index)) { echo 'Вы не указали почтовый индекс! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($adress)) { echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a>'; } Сообщение отредактировал moto-arena - 8.12.2012, 17:31 -------------------- |
|
|
alexvdv
|
Сообщение
#4
|
|
moto-arena,
Спасибо большое теперь все работает и вправду не доглядел, спасибо всем кто помог)) Помогите не могу разобраться еще с кодировкой при отправлении сообщения адабракадабра показывается (после того как выполняется скрипт в файле send.php) и на почтовый ящик приходят тоже каракули: редактирую через notepad++++ пробовал сохранять в utf-8 без bum, все равно не помогает <?php
if (isset($_POST['name'])) { $name = $_POST['name']; } if (isset($_POST['phone'])) { $phone = $_POST['phone']; } if (isset($_POST['email'])) { $email = $_POST['email']; } if (isset($_POST['sity'])) { $sity = $_POST['sity']; } if (isset($_POST['index'])) { $index = $_POST['index']; } if (isset($_POST['adress'])) { $adress = $_POST['adress']; } if (isset($_POST['komment'])) { $komment = $_POST['komment']; } if (empty($name)) { echo 'Вы не указали имя! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($phone)) { echo 'Вы не указали номер телефона! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($email)) { echo 'Вы не указали е-майл! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($sity)) { echo 'Вы не указали город! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($index)) { echo 'Вы не указали почтовый индекс! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($adress)) { echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a>'; } else { $to = "alex86vdv@list.ru"; $header = "Content-type: text/plain; charset: windows-1251;"; $subject = "Заказ в интернет-магазине MPG"; $message = "Имя пославшего: $name \Электронный адресс: $email \Номер телефона: $phone\Город доставки: $sity\Почтовый индекс: $index\Адресс доставки: $adress\Пожелание клиента: $komment"; $send = mail($to, $subject, $message, $headers); if ($send) { echo 'Сообщение отправлено!<a href="send.php">Вернитесь и заполните поле!</a>'; } else { echo "Сообщения не отправлено, повторите позднее. Приносим свои извинения!"; } } ?> |
|
|
moto-arena |
8.12.2012, 18:54;
Ответить: moto-arena
Сообщение
#5
|
|
$header = "Content-type: text/plain; charset: windows-1251;"; Здесь проблема.))
а в $send = mail($to, $subject, $message, $headers); Сообщение отредактировал moto-arena - 8.12.2012, 18:58 -------------------- |
|
|
alexvdv
|
Сообщение
#6
|
|
viktorina,
у меня получается, что форма в любом случае отсылает данные не зависимо от того все введено или нет, как это можно исправить? |
|
|
moto-arena |
8.12.2012, 19:14;
Ответить: moto-arena
Сообщение
#7
|
|
У вас нет проверки заполненых полей при отправки.
можно чтото типо такого. Ну всё равно это не совсем правильно. По нормальному нужно переписывать всё. Где вы нашли этот скрипт? или сами писали. <?php
if (isset($_POST['name'])) { $name = $_POST['name']; } if (isset($_POST['phone'])) { $phone = $_POST['phone']; } if (isset($_POST['email'])) { $email = $_POST['email']; } if (isset($_POST['sity'])) { $sity = $_POST['sity']; } if (isset($_POST['index'])) { $index = $_POST['index']; } if (isset($_POST['adress'])) { $adress = $_POST['adress']; } if (isset($_POST['komment'])) { $komment = $_POST['komment']; } if (empty($name)) { echo 'Вы не указали имя! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($phone)) { echo 'Вы не указали номер телефона! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($email)) { echo 'Вы не указали е-майл! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($sity)) { echo 'Вы не указали город! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($index)) { echo 'Вы не указали почтовый индекс! <a href="send.php">Вернитесь и заполните поле!</a>'; } if (empty($adress)) { echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a>'; } //проверка заполненых полей elseif(!empty($name) and !empty($phone) and !empty($email) and !empty($sity) and !empty($index) and !empty($adress)) { $to = "alex86vdv@list.ru"; $header = "Content-type: text/plain; charset: utf8; $subject = "Заказ в интернет-магазине MPG"; $message = "Имя пославшего: $name \Электронный адресс: $email \Номер телефона: $phone\Город доставки: $sity\Почтовый индекс: $index\Адресс доставки: $adress\Пожелание клиента: $komment"; $send = mail($to, $subject, $message, $headers); if ($send) { echo 'Сообщение отправлено!<a href="send.php">Вернитесь и заполните поле!</a>'; } else { echo "Сообщения не отправлено, повторите позднее. Приносим свои извинения!"; } } ?> -------------------- |
|
|
viktorina |
8.12.2012, 22:27;
Ответить: viktorina
Сообщение
#8
|
|
регулярными выражениями. Не трать время, а сразу займись ими. Обалденная штука.
например preg_match('/[a-z]{6,30}/',$name)==true; preg_match посмотри. Если хочешь работать с формами, то это самая крутая штука. empty там вообще ни к чему. if(isset($_POST['name']) && preg_match("/^[a-z]{6,30}$/",$_POST['name'])){бла бла бла} else {echo "Ошибка в поле Name";} Запись выше проверит существование поля в массиве, а потом проверит регулярным выражением. Если слово будет состоять из латинских букв размером 6-30 символов, то выполнится то, что в скобках. Я так понимаю ты только начал php изучать, всё верно делаешь, только всё равно потом прийдёш к regexp. Проверка нужна очень строгая. Сообщение отредактировал viktorina - 8.12.2012, 22:38 |
|
|
alexvdv
|
Сообщение
#9
|
|
|
|
|
moto-arena |
9.12.2012, 8:49;
Ответить: moto-arena
Сообщение
#10
|
|
|
кстати, В php уже есть некоторые фильтры валидации данных.
например FILTER_VALIDATE_EMAIL - проверка валидации email function e_email($email){ $mails=filter_var($email, FILTER_VALIDATE_EMAIL); return $mails; } //здесь валидный Email if(e_email("mail@mail.ru")) {echo "email валидный";} else {echo "email невалидный";} echo "<br>"; //здесь не валидный Email if(e_email("mailmail.ru")) {echo "email валидный";} else {echo "email невалидный";} ?> как уже писали выше, для проверки пользуйтесь регулярными выражениями. Немного поправил ваш скрипт. Регулярные выражение не добавлял. <?php if (isset($_POST['name'])) {$name = trim($_POST['name']);} if (isset($_POST['phone'])) {$phone = trim($_POST['phone']);} if (isset($_POST['email'])) {$email = trim($_POST['email']);} if (isset($_POST['sity'])) {$sity = trim($_POST['sity']);} if (isset($_POST['index'])) {$index = trim($_POST['index']);} if (isset($_POST['adress'])) {$adress = trim($_POST['adress']);} if (isset($_POST['komment'])) {$komment = trim(htmlspecialchars($_POST['komment']));} function e_email($em){ $mails=filter_var($em, FILTER_VALIDATE_EMAIL); return $mails;} if (empty($name)) {echo 'Вы не указали имя!<br>'; $error=true;} if (empty($phone)) {echo 'Вы не указали номер телефона!<br>'; $error=true;} if (empty($email)) {echo 'Вы не указали е-майл!<br>'; $error=true;} elseif(!e_email($email)) {echo 'email указан неверно! <br>'; $error=true;} if (empty($sity)) {echo 'Вы не указали город!<br>'; $error=true;} if (empty($index)) {echo 'Вы не указали почтовый индекс!<br>'; $error=true;} if (empty($adress)) {echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a><br>'; $error=true;} if(!isset($error)) { $to = "alex86vdv@list.ru"; $header = "Content-type: text/plain; charset: windows-1251;"; $subject = "Заказ в интернет-магазине MPG"; $message = "Имя пославшего: $name \Электронный адресс: $email \Номер телефона: $phone\Город доставки: $sity\Почтовый индекс: $index\Адресс доставки: $adress\Пожелание клиента: $komment"; $send = mail($to, $subject, $message, $headers); if ($send) {echo "Сообщения не отправлено, повторите позднее. Приносим свои извинения! <a href='buy.php'>Попробуйте снова!</a><br>";} else {echo "Сообщение отправлено!<a href='send.php'>Вернитесь и заполните поле!</a><br>";} } else {echo "<a href='send.php'>Попробуйте снова!</a><br>";} ?>
Сообщение отредактировал moto-arena - 9.12.2012, 7:29 -------------------- |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3292 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1171 | 24.11.2023, 14:46 автор: alexey |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44767 | 19.7.2023, 10:03 автор: qpPeW |
|
Есть спецы по php/laravel? | 3 | Mixatraider | 1856 | 26.5.2023, 20:48 автор: Mixatraider |
|
Опытный PHP\Python разработчик в поиске интересных задач | 6 | daikzlex | 3361 | 25.5.2023, 13:55 автор: daikzlex |
Текстовая версия | Сейчас: 29.3.2024, 10:13 |