Вы хотите вывести все ошибки сразу? Это правильный подход. Но код надо изменить, например
$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 символов.
Не совсем логично получится для одного поисковика, так как на страницах останутся старые ссылки с ?. Может поменять для всех.
В какой версии и почему?
Количество символов в полях должно 20 или больше. По логике для фамилии и имени это много, поставьте 4.
Делайте одинаково для всех ^.*NAME.*$
^-начало строки
.*-ноль или больше любых символов
$-конец строки
Измененный вариант Dreammaker
<?php if (!isset($_POST['name']) || strlen($_POST['name'])<20) { echo "Сообщение об ошибке"; } elseif (!isset($_POST['surname']) || strlen($_POST['surname'])<20) { echo "Сообщение об ошибке"; } else { $to = "******@mail.ru"; $subject = "Тема сообщения"; $message = "Фамилия: {$_POST['surname']}\nИмя: {$_POST['name']}"; mail ($to,$subject,$message) or die( "Не могу отправить письмо !!!" ); echo "Спасибо за отправку вашего сообщения<br /><a href='/'>Вернуться на главную</a>"; } ?>
Сделайте попроще проверку на длину
strlen($_POST['name'])<20
вместо
!$name = substr($_POST['name'], 0, 20) - неправильно
И поскольку у нас не будет переменных $name, $surname, то надо поменять
$message = "Фамилия: {$_POST['surname']}\nИмя: {$_POST['name']}";
Нет точек перед второй *
"^.*google*$" => "^.*google.*$"
Klopopryg, После проверки и отправки письма сделать редирект на страницу с сообщением об успешной отправке. Таким образом избежите двойных сабмитов.
header('Location: /ok.html');
Ayavryk, и делайте наоборот, вставляйте error_reporting(E_ALL); в начало скрипта.
Mikich, посмотрите сам скрипт /home/miki221/public_html/functions.php в строке 274, может и сами исправите