Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по PHP к кодерам. Как сделать поле в форме обратной связи обязательным?

Mayday Знаток (308), закрыт 9 лет назад
Господа кодеры php, вопрос к вам. Совсем не разбираюсь с php, немого профиль другой, но нужно очень. Проблема следующая - есть форма обратной связи на сайте, в ней таблица с action=mail.php. Собственно в мейл. пхп все работает, письма приходят, все хорошо, но как бы сделать так, что бы не заполнив все поля в форме - письмо оптравить было бы нельзя с резолвом, типа: "заполните все обязательные поля". А то сейчас отправить можно хоть со всеми пустыми полями.

Код мейл. пхп:








<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['message'])) {$mess = $_POST['message'];}

$to = "xxxxxxxxxxx;
$headers = "Content-type: text/plain; charset = windows-1251";
$subject = "Ваше сообщение отправлено! ";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "Спасибо за отправку вашего сообщения! ";
echo "Нажмите, чтобы вернуться на главную страницу";
}
else
{
echo "Ошибка. Сообщение не отправлено! ";
}
?>



Собственно, как из него видно - в форме на сайте есть 3 строки, имя, e-mail и сообщение. Нужно, что бы они стали обязательными к заполнению, все 3. Как это сделать?
Лучший ответ
Pentagon Мыслитель (9636) 9 лет назад
А фильтровать данные кто будет? ? Волочкова или Киркоров? ?Используйте вот такой код

<?php

if(isset($_POST['send'])) {

$name = trim(htmlspecialchars($_POST['name']));
$email = trim(htmlspecialchars($_POST['email']));
$message = trim(htmlspecialchars($_POST['message']));

if(empty($name)) echo 'Enter name';
else if(empty($email)) echo 'Enter email';
else if(empty($message)) echo 'Enter message';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) echo 'Incorrect email';
else {

$to = 'bebebebbebe';
$subject = 'subject';
$headers = 'Content-Type: text/plain; charset=windows-1251';
$send = mail($to, $subject, $message, $headers);

if($send) echo 'Sended';
else echo 'Failed';

}

}

?>

<form action="" method="post">
<input type="text" name="name" /><br />
<input type="text" name="email" /><br />
<textarea name="message" cols="80" rows="3"></textearea><br />
<input type="submit" name="send" />
</form>

Теперь немножко теории. . в принципе чтобы избежать лишной нагрузки на сервер можно проверять форму с помощью js или же использовать для обязательных полей атрибут required..а для проверки в html5 есть новый тип инпутов. . а именно email..это прекрасно но из за старых браузеров приходится использовать старые добрые варианты =)
Остальные ответы
Федя Федя Знаток (432) 9 лет назад
<?
if (isset($_POST['name']) && isset($_POST['email']) &&isset($_POST['message']))
{
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = "xxxxxxxxxxx;
$headers = "Content-type: text/plain; charset = windows-1251";
$subject = "Ваше сообщение отправлено! ";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "Спасибо за отправку вашего сообщения! ";
echo "Нажмите, чтобы вернуться на главную страницу";
}
else
{
echo "Ошибка. Сообщение не отправлено! ";
}
}
else
{
echo 'Заполните поля';
}
?>
fallen downМудрец (19679) 9 лет назад
isset принимает много аргументов
if ( isset( $_POST['name'] , $_POST['email'] , $_POST['message'] ) ) {
Похожие вопросы