请检查我的代码。我有2个字段验证电子邮件不知道如何解决这个关于FILTER_VALIDATE_EMAIL的问题
一个是
if ($email == NULL) {
$error['email'] = "email is missing";
}
另一个是
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error['emailfilter'] = "email is Invalid";
}
但我的问题是,当电子邮件字段为空/空。我发现那两个交战是表演。 “电子邮件缺失”&“电子邮件无效”;我只想要一个交战会显示。例如,如果电子邮件提交空白/空白。它只会显示“电子邮件丢失”不会显示“电子邮件无效”,当电子邮件无效时将显示“电子邮件无效”。以下是我的完整代码。
<?php
if (isset($_POST['contact'])) {
$warning = array();
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$msg = $_POST['message'];
$to = "[email protected]";
$sub = "you got a msg";
$headers = "from: $email";
if ($firstname == NULL) {
$error['fname'] = "firstname is missing";
}
if($lastname == NULL){
$error['lname'] = "Last name is missing";
}
if ($email == NULL) {
$error['email'] = "email is missing";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error['emailfilter'] = "email is Invalid";
}
if ($msg == NULL) {
$error['msg'] = "message is required";
}
if (count($error) == 0) {
mail($to, $sub, $msg, $headers);
$success = "Message Submited";
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>conatact</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<form action="" method="POST">
<input type="text" name="firstname" Placeholder="First Name"><br />
<p class="error"><?php if (isset($error['fname'])) {
echo $error['fname'];
}?></p>
<input type="text" name="lastname" Placeholder="Last Name"><br />
<p class="error"><?php if (isset($error['lname'])) {
echo $error['lname'];
}?></p>
<input type="email" name="email" Placeholder="Email"><br />
<p class="error"><?php if (isset($error['email'])) {
echo $error['email'];
}?></p>
<p class="error"><?php if (isset($error['emailfilter'])) {
echo $error['emailfilter'];
}?></p>
<textarea name="message" cols="30" rows="10"></textarea><br />
<p class="error"><?php if (isset($error['msg'])) {
echo $error['msg'];
}?></p>
<input type="password" name="password" Placeholder="Password"><br />
<input type="submit" value="send" name="contact">
</form>
<h2 class="error"><?php if (isset($success)) {
echo $success;
}?></h2>
</body>
</html>
[elseif](https://secure.php.net/manual/en/control-structures.elseif.php)? – FirstOne
为什么不使用验证库? vlucas/valitron是一个体面的 – geggleto
为了您自己和他人的安全,请阅读正确处理用户输入。一个开始的地方是[w3schools](https://www.w3schools.com/php/php_form_validation.asp)。 –