Shtogrin

Shtogrin
Рейтинг
95
Регистрация
02.11.2006
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 символов.

Не совсем логично получится для одного поисковика, так как на страницах останутся старые ссылки с ?. Может поменять для всех.

HostCMS:
В этой строке тоже будет ошибка при отсутствии элемента в суперглобально массиве.

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

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

Samail:
а для рамблера и апорта $ нужно ставить?

Делайте одинаково для всех ^.*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, может и сами исправите

Всего: 1230