отправить HTML-форму с PHP не может решить

У меня большая проблема с отправкой простой HTML-формы с PHP.
Моя проблема в том, что когда все поля пусты, он все еще отправляет сообщение.
Я не знаю, почему этот код по-прежнему отправлять пустую форму ??

    <form id="form1" name="form1" method="post" action="forma.php">
<p>
<label for="ime">Ime:</label>
<input type="text" name="ime" id="ime" />
</p>
<p>
<label for="prezime">Prezime:</label>
<input type="text" name="prezime" id="prezime" />
</p>
<p>
<label for="email">e-mail:</label>
<input type="text" name="email" id="email" />
</p>
<p>
<label for="poruka">Poruka:</label>
<textarea name="poruka" cols="40" rows="10" id="poruka"></textarea>
</p>
<p>
<input type="submit" name="submit" value="submit" />
</p>
</form>

Мой php код:

<?php
if (isset($_POST['submit']))
{

$ime= $_POST['ime'];
$prezime= $_POST['prezime'];
$email= $_POST['email'];
$poruka= $_POST['poruka'];

$email_from = '[email protected]';
$email_subject = "forma sa sajta";
$email_body = "Ime: $ime. \n". "Prezime: $prezime \n". "email: $email \n". "poruka: $poruka" ;
$to = "[email protected]";
mail ($to, $email_subject, $email_body);

echo "Message is sent";

}

else {

echo "Message is not sent";

}

?>

Итак, еще раз, когда я заполняю поля, сообщение отправляется. Это нормально, я получил письмо.
Но когда я просто нажимаю «отправить» (без заполнения полей), он все равно отправляет сообщение на мою электронную почту.

Что не так с этим кодом? Я пробую все, что знаю, но безуспешно.

Спасибо.

-1

Решение

Проблема в том, что вы проверяете, установлен ли «submit».

Ваше заявление if должно читать что-то вроде:

if(isset($_POST['submit']) && all_other_fields_are_valid($_POST)){...}

function all_other_fields_are_valid($fields)
{
//logic to decide what fields and values you require goes here
}
1

Другие решения

Вам необходимо проверить все необходимые поля. только проверить отправить, он будет пытаться по почте:

if (isset($_POST['submit']
, $_POST['ime']
, $_POST['prezime']
, $_POST['email']
, $_POST['poruka']))

Кроме того, вы можете проверить со стороны клиента, используя новый HTML5 required атрибут:

 <input type="text" name="ime" id="ime" required />

Таким образом, вы не тратите ресурсы сервера на плохо сформированные запросы.

1

На самом деле, поскольку они отправляются как пустые переменные, они все равно будут иметь значение true в isset (), даже если в полях ввода при отправке нет текста.

if($_POST['ime'] && $_POST['prezime'] && $_POST['email'] && $_POST['poruka']) {
// do stuff here
}

Пока все они имеют значения, и ни одно из значений не равно «ложь» или «0», это будет иметь значение «истина», только если кто-то поместит текст во все поля ввода.

1

Это проверит, установлены ли все необходимые переменные POST, если они пусты, и выдаст ошибку, если так:

<?php
if (isset($_POST['submit'], $_POST['ime'], $_POST['prezime'], $_POST['email'], $_POST['poruka']))
{
$error = "";
if($_POST['ime'] == ""){
$error .= "ima was empty!<br />";
}
if($_POST['prezime'] == ""){
$error .= "prezime was empty!<br />";
}
if($_POST['email'] == ""){
$error .= "email was empty!<br />";
}
if($_POST['poruka'] == ""){
$error .= "poruka was empty!<br />";
}

if($error == ""){

$ime= $_POST['ime'];
$prezime= $_POST['prezime'];
$email= $_POST['email'];
$poruka= $_POST['poruka'];

$email_from = '[email protected]';
$email_subject = "forma sa sajta";
$email_body = "Ime: $ime. \n". "Prezime: $prezime \n". "email: $email \n". "poruka: $poruka" ;
$to = "[email protected]";
mail ($to, $email_subject, $email_body);

echo "Message is sent";

} else {

echo $error;
}
} else {

echo "Message is not sent";

}

?>
1
По вопросам рекламы [email protected]