Помогите доработать форму обратной связи.

123
Varkolak
На сайте с 03.06.2005
Offline
174
#11


<?php

if (!isset($_POST['name']) || strlen($_POST['name'])<20)
{
echo "Сообщение об ошибке";
}
elseif (!isset($_POST['surname']) || strlen($_POST['surname'])<20)
{
echo "Сообщение об ошибке";
}
else
{
$adds = "Content-Type: text/plain; charset=windows-1251";
$to = "******@mail.ru";
$subject = "Тема сообщения";
$message = "Фамилия: {$_POST['surname']}\nИмя: {$_POST['name']}";
mail ($to,$subject,$message,$adds) or die( "Не могу отправить письмо !!!" );
echo "Спасибо за отправку вашего сообщения<br /><a href='/'>Вернуться на главную</a>";
}
?>

Сейчас не работает только проверка на количество символов!

html/css/js верстка и разработка сайтов на hostcms (хостцмс) - skype: varkolak1, тел: 89675012935, e-mail: anton.yurzanov@gmail.com
Shtogrin
На сайте с 02.11.2006
Offline
95
#12

Количество символов в полях должно 20 или больше. По логике для фамилии и имени это много, поставьте 4.

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
Shtogrin
На сайте с 02.11.2006
Offline
95
#13
HostCMS:
В этой строке тоже будет ошибка при отсутствии элемента в суперглобально массиве.

В какой версии и почему?

Varkolak
На сайте с 03.06.2005
Offline
174
#14

Блин, это тут стоит значит, min кол символов, я как то не подумал...

Теперь осталось только заточить под мои нужды!

Всем спасибо!!!

Shtogrin
На сайте с 02.11.2006
Offline
95
#15
Varkolak:
убрать else - то будет выводится каждая ошибка отдельно?

Вы хотите вывести все ошибки сразу? Это правильный подход. Но код надо изменить, например

$error=array();
if(!isset($_POST['name']) || strlen($_POST['name'])>20 || strlen($_POST['name'])<3)
$error[]='error name';
if(!isset($_POST['surname']) || strlen($_POST['surname'])>20 || strlen($_POST['surname'])<3)
$error[]='error surname';
if(count($error))
{
foreach($error as $k=>$v)
echo $v."<br>";
}
else
{
$to = "******@mail.ru";
$subject = "Тема сообщения";
$message = "Фамилия: {$_POST['surname']}\nИмя: {$_POST['name']}";
mail ($to,$subject,$message) or die( "Не могу отправить письмо !!!" );
}

Длина полей от 3 до 20 символов.

Bor-ka
На сайте с 16.11.2004
Offline
256
#16
Shtogrin:
В какой версии и почему?

ошибки не будет

Shtogrin
На сайте с 02.11.2006
Offline
95
#17
Bor-ka:
ошибки не будет

if(TRUE || дальше нет смысла проверять, так как уже TRUE)

Varkolak
На сайте с 03.06.2005
Offline
174
#18

Shtogrin, а как работать будет?


$error=array();
if(!isset($_POST['name']) || strlen($_POST['name'])>20 || strlen($_POST['name'])<3)
$error[]='error name';
if(!isset($_POST['surname']) || strlen($_POST['surname'])>20 || strlen($_POST['surname'])<3)
$error[]='error surname';
if(count($error))
{
foreach($error as $k=>$v)
echo $v."<br>";
}
else
{
$to = "******@mail.ru";
$subject = "Тема сообщения";
$message = "Фамилия: {$_POST['surname']}\nИмя: {$_POST['name']}";
mail ($to,$subject,$message) or die( "Не могу отправить письмо !!!" );
}

Мне надо что бы выводилось типа, не заполнено поле имя и поле фамилия - если они не заполнены.

$k=>$v - что то не понимаю зачем.

Shtogrin
На сайте с 02.11.2006
Offline
95
#19
Varkolak:

Мне надо что бы выводилось типа, не заполнено поле имя и поле фамилия - если они не заполнены.

А как вы рисуете саму форму? Этот html код надо вставить в скрипт.

Varkolak:

$k=>$v - что то не понимаю зачем.

Это мы собрали все ошибки в массив error и в цикле foreach выводим

ошибка 1<br>

ошибка 2<br>

Можете выслать html код формы или если есть данные какого-то временного хостинга для этого скрипта на roman [at] shtogrin.com.

Dreammaker
На сайте с 20.04.2006
Offline
569
#20
Shtogrin:
if(TRUE || дальше нет смысла проверять, так как уже TRUE)

Кстати, в каком-то из языков в отличие от php и других нормальных языков :) логика извращённая: сначала проверяется правое условие, а затем левое.. точно, не помню, в ASP чтоли.

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий