Расширить форму PHP с помощью обязательных полей и проверки

Мне нужна помощь в расширении моего скрипта PHP. Мне нужны обязательные поля и проверка поля электронной почты в форме регистрации.

Это мой код, я пытался использовать разные коды if и echo, но в этом ничего не работает.

<?php

$email = $_POST['email'];
$from = $email;

$to = "[email protected]";
$subject = "SIGN UP";

$emailbody = "";
$emailbody .= "Email: " . $email . "\n";

$header = "";
$header .= "From:" . $from . " \n";
$header .= "Content-Type:text/plain;charset=utf-8";

// Sending message
$success = mail($to, $subject, $emailbody, $header);

if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>

Код работает, письма доставляются, но форма не должна быть успешной, если поля не заполнены. Заранее спасибо.

0

Решение

Вы можете проверить поле электронной почты не пусто, а затем вы можете использовать filter_var проверить предоставленную электронную почту.

Вот пример

<?php
if(!empty($_POST['email']) && (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) )
{
$email = $_POST['email'];
$from = $email;

$to = "[email protected]";
$subject = "SIGN UP";

$emailbody = "";
$emailbody .= "Email: " . $email . "\n";

$header = "";
$header .= "From:" . $from . " \n";
$header .= "Content-Type:text/plain;charset=utf-8";

// Sending message
$success = mail($to, $subject, $emailbody, $header);

if ($success)
{
print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">";
}
else
{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
}
else print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
?>
0

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

похоже, что электронная почта — это единственное, что вы собираете с POST, так что просто проверьте, пустой во-первых, и подтвердить это:

<?php

if(!empty($_POST['email']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){

$email = $_POST['email'];
$from = $email;

$to = "[email protected]";
$subject = "SIGN UP";

$emailbody = "";
$emailbody .= "Email: " . $email . "\n";

$header = "";
$header .= "From:" . $from . " \n";
$header .= "Content-Type:text/plain;charset=utf-8";

// Sending message
$success = mail($to, $subject, $emailbody, $header);

if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
}
else echo "email required";
?>

И прежде чем он попадет на сервер, вы можете помочь своему пользователю, выполнив сначала некоторую проверку на стороне клиента, чтобы убедиться, что вход по электронной почте, а также необходимо.

0

Проблема исправлена, но появилась другая проблема. HTML-форма не отправляет письмо правильно. Я попробовал шесть почтовых адресов. Если кто-то отправляет форму, письма иногда отправляются одному — иногда другому — иногда без адреса. Я слышал о том, чтобы не использовать обычную команду mail (). Может кто-нибудь сказать мне об этом?

<?php
if(!empty($_POST['email']) && !empty($_POST['name']) && !empty($_POST['message']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = $email;
$to = "[email protected]";
$subject = "SUPPORT";

$emailbody = "";
$emailbody .= "Full name: " . $name . "\n";
$emailbody .= "Email: " . $email . "\n";
$emailbody .= "Message: " . $message . "\n";

$header = "";
$header .= "From:" . $from . " \n";
$header .= "Content-Type:text/plain;charset=utf-8";

$success = mail($to, $subject, $emailbody, $header);

if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/confirmation.html\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">";
}
}
else print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">";
?>
0
По вопросам рекламы [email protected]