создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Проверка введенных данных на PHP, отправка заполненной формы на почту

В нашем примере у нас 5 полей, которые необходимо заполнить:

- имя

- сообщение

- e-mail

- контактный телефон

- контрольное число для защиты

Помимо простой проверки на пустоту поля, мы покажем как проверить правильно ли введен e-mail и телефон

Проверять поля мы будем с помощью PHP. В последнее поле необходимо ввести определенное число (для защиты от автоматического заполнения).

Уведомление об ошибке в заполнении формы появится после перезагрузки страницы.

Делаем, создаем файл index.php и пишем туда следующую форму:


<form action=index.php method=post>

Ваше Имя:<p>

<input type=text name=uname value="<?=@$uname?>" class=vvod>

<p>

<span class=error><?=@$e1?></span>

<p>

Текст Сообщения:<p>

<textarea name=utext rows=10 class=vvod_textarea><?=@$utext?></textarea>

<p>

<span class=error><?=@$e2?></span>

<p>

Ваш E-Mail:<p>

<input type=text name=umail value="<?=@$umail?>" class=vvod>

<p>

<span class=error><?=@$e3;?></span>

<p>

Контактный телефон (например XXX-XX-XX):<p>

<input type=text name=uphone value="<?=@$uphone?>" class=vvod>

<p>

<span class=error><?=@$e4?></span>

<p>

Выбор:<p>

<select name=select class=vvod>

<option value=1 <?@$select==1 ? print"selected":false?>>1</option>

<option value=2 <?@$select==2 ? print"selected":false?>>2</option>

<option value=3 <?@$select==3 ? print"selected":false?>>3</option>

</select>

<p><p>

Checkbox:<p>

<input type=checkbox value=1 name=box1 <?@$box1==1 ? print"checked":false?>>1<p>

<input type=checkbox value=2 name=box2 <?@$box2==2 ? print"checked":false?>>2<p>

<input type=checkbox value=3 name=box3 <?@$box3==3 ? print"checked":false?>>3<p>

<p>

Radio:<p>

<input type=radio name=radio value=1 <?@$radio==1 ? print"checked":false?>>1<p>

<input type=radio name=radio value=2 <?@$radio==2 ? print"checked":false?>>2<p>

<input type=radio name=radio value=3 <?if(@$radio==3) {print"checked";}if(empty($_POST[radio])){print"checked";}?>>3<p>

<p>

Введите результат 24*2=?:<p>

<input type=text name=umath value="<?=@$umath?>" class=vvod>

<p>

<span class=error><?=@$e5?></span>

<input type=hidden name=go value=5><p>

<button type=submit>Отправить</button>

</form>

Вы заметили, что в значение полей (value=) мы вставили код php.

Что дает данный код?

Представьте, что пользователь заполнял форму с кучей полей и одно случайно пропустил, и вот страница перезагрузилась, он видит сообщения об ошибке и, о Боже!, все поля которые он заполнял пустые.

Вот данный код как раз и спасает ситуацию, поля которые были заполнены останутся заполненными.

Форма готова. Пишем скрипт проверки. Разместим его перед формой


<?if(isset($_POST["go"])):

$e1=null;

$uname=trim($_POST["uname"]);

$uname=strip_tags($uname);//вырезаем теги

//конвертируем специальные символы в мнемоники HTML

$uname=htmlspecialchars($uname,ENT_QUOTES);

//на некоторых серверах автоматически добавляются обратные слеши к кавычкам, вырезаем их

$uname=stripslashes($uname);

if(strlen($uname)=="0"):

$e1.="Заполните поле 'Ваше имя'<p>";

endif;

$e2=null;

$utext=trim($_POST["utext"]);

$utext=strip_tags($utext);

$utext=htmlspecialchars($utext,ENT_QUOTES);

$utext=stripslashes($utext);

if(strlen($utext)=="0"):

$e2.="Заполните поле 'Текст Сообщения'<p>";

endif;

$e3=null;

$umail=trim($_POST["umail"]);

$umail=strip_tags($umail);

$umail=htmlspecialchars($umail,ENT_QUOTES);

$umail=stripslashes($umail);

if(!filter_var($umail,FILTER_VALIDATE_EMAIL)):

$e3.="Неверное значение<p>";

endif;

$e4=null;

$uphone=trim($_POST["uphone"]);

$uphone=strip_tags($uphone);

$uphone=htmlspecialchars($uphone,ENT_QUOTES);

$uphone=stripslashes($uphone);

if(strlen($uphone)=="0"):

$e4.="Заполните поле 'Контактный телефон'<p>";

elseif((strlen($uphone)>0)&&(!preg_match("/^[0-9-]+$/",$uphone))):

$e4.="Неверный формат<p>";

endif;

//получаем данные из select

$select=trim($_POST[select]);

$select=strip_tags($select);

$select=htmlspecialchars($select,ENT_QUOTES);

$select=stripslashes($select);

if(!empty($_POST["box1"])){$box1=trim($_POST["box1"]);}

if(!empty($_POST["box2"])){$box2=trim($_POST["box2"]);}

if(!empty($_POST["box3"])){$box3=trim($_POST["box3"]);}

if(!empty($_POST[radio])){$radio=trim($_POST[radio]);}

$e5=null;

$umath=trim($_POST["umath"]);

$umath=strip_tags($umath);

$umath=htmlspecialchars($umath,ENT_QUOTES);

$umath=stripslashes($umath);

if($umath!="48"):

$e5.="Неверный результат<p>";

endif;

$eEn=$e1.$e2.$e3.$e4.$e5;

if($eEn==null):

$dt=date("d.m.Y, H:i:s");//дата и время

$mail="my@email.ru";//e-mail куда уйдет письмо

$title="Форма проверки введенных данных";//заголовок (тема) письма

//конвертируем

$title=iconv("utf-8","windows-1251",$title);

$title=convert_cyr_string($title,"w","k");

$utext=str_replace("\r\n","<p>",$utext);//обрабатываем

$mess="Имя: $uname<p>";

$mess.="Сообщение: $utext<p>";

//ссылка на e-mail

$mess.="E-Mail: <a href='mailto:$umail'>$umail</a><p>";

$mess.="Телефон: $uphone<p>";

$mess.="Дата и Время: $dt</body></html>";

//конвертируем

$mess=iconv("utf-8","windows-1251",$mess);

$mess=convert_cyr_string($mess,"w","k");

$headers="MIME-Version:1.0\r\n";

$headers.="Content-Type:text/html;charset=koi8-r\r\n";

$headers.="From: $umail\r\n";//откуда письмо

mail($mail,$title,$mess,$headers);//отправляем

//выводим уведомление об успехе операции и перезагружаем страничку

print"<script>

<!--

alert('Ваше сообщение отправлено! Спасибо!');

function reload(){location='index.php'};

setTimeout('reload()',0);

-->

</script>";

endif;

endif;

?>

Ошибки заполнения $e1-$e5 можно разместить в удобном для Вас месте на странице.

Демонстрация. Проверка введенных данных на PHP, отправка заполненной формы на почту

Ваше Имя:

Текст Сообщения:

Ваш E-Mail:

Контактный телефон (например XXX-XX-XX):

Выбор:

Checkbox:

1

2

3

Radio:

1

2

3

Введите результат 24*2=?:

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting