Как сделать обязательным заполнение поля?

12
Klopopryg
На сайте с 29.12.2004
Offline
344
9562

Есть скрипт, но проблема в том, что поле "Email" не является обязательным, как сделать его обязательным к заполнению?

<?php

if(isset($_POST['ok']))

{

$subject = 'Заявка с сайта www.vizu.ru';

$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "w","k")).'?=';



$text= 'Суть дела: '.$_POST['meropr'].'

<br>Контактное лицо: '.$_POST['contact'].'

<br>E-mail: '.$_POST['email'].'

<br>Телефон: '.$_POST['tel'];



$headers = "Content-type: text/html; charset=windows-1251 \r\n";

$headers .= "From: Имя <РЕАЛЬНОЕ_МЫЛО_С_ЭТОГО_ХОСТИНГА>\r\n";

$headers .= "Reply-To: РЕАЛЬНОЕ_МЫЛО_С_ЭТОГО_ХОСТИНГА\n\n";



if (mail('ruviza@mail.ru', $subject, $text, $headers)) {echo "<b>Спасибо, ваша заявка прияна!</b>";} else {echo "<b>Error</b>";}

}

?>

<form method="post">

<b>Что вы хотите заказать:</b><br><input name="meropr" type="text-area" cols=35 rows=8 size=80><br><br>

<b>Контактное лицо:</b><br><input name="contact" type="text" size=80><br><br>

<b>E-mail:</b><br><input name="email" type="text" size=80><br><br>

<b>Телефон:</b><br><input name="tel" type="text" size=80><br><br>

<input type="submit" name="ok" value="Отправить">

</form>
Лучше выстрелить, перезарядить и еще раз выстрелить, чем светить фонариком и спрашивать - "кто тут?"
psylosss
На сайте с 23.12.2005
Offline
126
#1

Надо добавить проверку, заполнено ли поле, корректно ли заполнено. Если да, то отправить мыло и сообщить, что все ок. Если нет, написать, что типа поле не заполнено, надо бы заполнить, и при этом сохранить все, что было написано в форме до этого, чтобы человек при ошибке не заполнял все заново.

или готовый код нужен? :)

Веб-разработка. Сложные проекты. Проектирование. Проект-менеджмент. Стартапы.
R2
На сайте с 01.02.2007
Offline
28
#2
Klopopryg:
Есть скрипт, но проблема в том, что поле "Email" не является обязательным, как сделать его обязательным к заполнению?

В простейшем случае добавить в первое if

if(isset($_POST['ok']) AND !empty($_POST['email']))

Klopopryg
На сайте с 29.12.2004
Offline
344
#3
Raul21:
В простейшем случае добавить в первое if


if(isset($_POST['ok']) AND !empty($_POST['email']))

А куда конкретно вставлять, можете показать?

R2
На сайте с 01.02.2007
Offline
28
#4
Klopopryg:
А куда конкретно вставлять, можете показать?

Ну дык... первые строчки:

<?php


if(isset($_POST['ok']) AND !empty($_POST['email']))

{

и далее по тексту

Но это, конечно не гарантирует валидность Email

[Удален]
#5

проще и правильней сделать проверку на стороне клиента


<form method="post" id='frm'>

<b>Что вы хотите заказать:</b><br><input name="meropr" type="text-area" cols=35 rows=8 size=80><br><br>

<b>Контактное лицо:</b><br><input name="contact" type="text" size=80><br><br>

<b>E-mail:</b><br><input name="email" id='email' type="text" size=80><br><br>

<b>Телефон:</b><br><input name="tel" type="text" size=80><br><br>

<input type="button" name="ok" value="Отправить"

onclick="if (/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test(document.getElementById('email').value)))
document.getElementById('frm').submit(); else alert('Косяк с адресом'); ">

Это не только проверка на обязательность, но на и на корректность e-mail адреса перед отдачей.

Ну ессно от спамеров не поможет, но средства от них тоже есть несложные

R2
На сайте с 01.02.2007
Offline
28
#6
neolord:
проще и правильней сделать проверку на стороне клиента

Имхо, правильней и на стороне клиента и на стороне сервера

[Удален]
#7

Ну вообще, конечно, как метко говорят - дай дураку стеклянный член, он и его разобьет, и руки порежет... Так что в идеальном варианте так бы оно и надо. Но это отягощает и сервер и клиента - он должен ждать пока уйдет форма чтобы узреть сообщение об ошибке.

R2
На сайте с 01.02.2007
Offline
28
#8
neolord:
он должен ждать пока уйдет форма чтобы узреть сообщение об ошибке.

Зачем нам стекляный...

Проверка на стороне клиента - защита от невнимательности,

на стороне сервера - от злого умысла.

Все имхо

Klopopryg
На сайте с 29.12.2004
Offline
344
#9
neolord:
проще и правильней сделать проверку на стороне клиента


Это не только проверка на обязательность, но на и на корректность e-mail адреса перед отдачей.
Ну ессно от спамеров не поможет, но средства от них тоже есть несложные

Только что-то она не хочет работать :(

Попробовал вставить... ничего... кстати, не пишет ошибку, что поле е-маил заполнено неверно.

http://www.vizu.ru/zayvka.php - вообще не хочет отправлять, вот код:



<?php

if(isset($_POST['ok']) AND !empty($_POST['email']))

{

$subject = 'Заявка с сайта www.vizu.ru';

$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "w","k")).'?=';



$text= 'Суть дела: '.$_POST['meropr'].'

<br>Контактное лицо: '.$_POST['contact'].'

<br>E-mail: '.$_POST['email'].'

<br>Телефон: '.$_POST['tel'];



$headers = "Content-type: text/html; charset=windows-1251 \r\n";

$headers .= "From: Имя <РЕАЛЬНОЕ_МЫЛО_С_ЭТОГО_ХОСТИНГА>\r\n";

$headers .= "Reply-To: РЕАЛЬНОЕ_МЫЛО_С_ЭТОГО_ХОСТИНГА\n\n";



if (mail('ruviza@mail.ru', $subject, $text, $headers)) {echo "<b>Спасибо, ваша заявка прияна!</b>";} else {echo "<b>Error</b>";}

}

?>

<form method="post" id='frm'>

<b>Что вы хотите заказать:</b><br><input name="meropr" type="text-area" cols=35 rows=8 size=80><br><br>

<b>Контактное лицо:</b><br><input name="contact" type="text" size=80><br><br>

<b>E-mail:</b><br><input name="email" id='email' type="text" size=80><br><br>

<b>Телефон:</b><br><input name="tel" type="text" size=80><br><br>

<input type="button" name="ok" value="Отправить"

onclick="if (/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test(document.getElementById('email').value)))
document.getElementById('frm').submit(); else alert('Косяк с адресом'); ">

</form>
E
На сайте с 12.03.2008
Offline
30
#10


<?php
if(isset($_POST['ok'])){
if(preg_match("/^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,4}$/", $_POST['email']) < 1){
$email=false;
$mailerr= "<span style='color:red;'> &rarr; Неправильный email!</span>";
}else {
$email=true;
}

$subject = 'Заявка с сайта www.vizu.ru';
$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "w","k")).'?=';
$text= 'Суть дела: '.$_POST['meropr'].'
<br>Контактное лицо: '.$_POST['contact'].'
<br>E-mail: '.$_POST['email'].'
<br>Телефон: '.$_POST['tel'];

$headers = "Content-type: text/html; charset=windows-1251 \r\n";
$headers .= "From: Имя <РЕАЛЬНОЕ_МЫЛО_С_ЭТОГО_ХОСТИНГА>\r\n";
$headers .= "Reply-To: РЕАЛЬНОЕ_МЫЛО_С_ЭТОГО_ХОСТИНГА\n\n";
if ($email) {
if (mail('ruviza@mail.ru', $subject, $text, $headers)) {echo "<b>Спасибо, ваша заявка прияна!</b>";} else {echo "<b>Error</b>";}
}
}
?>
<form method="post">
<b>Что вы хотите заказать:</b><br><input name="meropr" type="text-area" cols=35 rows=8 size=80><br><br>
<b>Контактное лицо:</b><br><input name="contact" type="text" size=80><br><br>
<b>E-mail:</b><br><input name="email" type="text" size=80><?=$mailerr;?><br><br>
<b>Телефон:</b><br><input name="tel" type="text" size=80><br><br>
<input type="submit" name="ok" value="Отправить">
</form>

один из пособов, все работает.

иногда так страшно, проснуться взрослым однажды
12

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