我看过其他类似的帖子,对他们的答案对我不起作用。我之前也因为过于含糊而被删除了一个问题,我希望这次不会发生,因为我试图具体化。如果我的问题出现问题,请告诉我,而不是简单地进行投票。
我正在尝试使用后端php验证建立联系表单。当我最终需要后端验证时,我将升级HTML表单以包括前端验证。
联系表单本身与mail()函数一起使用,但验证由于某种原因不起作用。我想要它,以便如果一个字段留空,它将发布“所有字段都是必需的”通知,如果电子邮件字段没有at符号(@),它将显示“电子邮件必须有一个at符号( @)”。
要做到这一点,我有指定名称的HTML表单输入,然后在PHP中我有验证,其中包括'header(“Location:email-form2.php”);'如果表单字段不正确,则重定向回同一页面。但是无论我尝试什么,都不会发生错误重定向,它只是指向'email-action.php'的操作页面,发送电子邮件然后完成。
验证不起作用,我做错了什么?
这是'email-form2.php'代码:
<?php
session_start();
if ( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['subject']) && isset($_POST['message']) ) {
if ( strlen($_POST['name']) < 1 || strlen($_POST['email']) < 1 || strlen($_POST['subject']) < 1 || strlen($_POST['message']) < 1) {
$_SESSION['error'] = "All fields are required";
header("Location: email-form2.php");
return;
}
elseif (strpos($_POST['email'], '@' ) == false) {
$_SESSION['error'] = "Email must have an at-sign (@)";
header("Location: email-form2.php");
return;
}
else {
return false;
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf8">
<title>Email Tester</title>
</head>
<body>
<?php
if ( isset($_SESSION['error']) ) {
echo('<p style="color: red;">'.$_SESSION['error']."</p>\n");
unset($_SESSION['error']);
}
?>
<form action="email-action.php" method="POST">
<label for="name">Enter your name: </label><br>
<input type="text" id="name" name="name"><br>
<label for="email">Enter your email: </label><br>
<input type="text" id="email" name="email"><br>
<label for="subject">Subject:</label><br>
<input type="text" id="subject" name="subject"><br>
<label for="message">Enter your message:</label><br>
<input type="text" id="message" name="message"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
'email-action.php'文件位于同一文件夹中,以下是代码:
<?php
$to = "example@example.com";
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = "From: $name <$email>";
mail($to, $subject, $message, $headers);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf8">
<title>Email Tester</title>
</head>
<body>
<h1>Email Sent!</h1>
<?php
if ( isset($_SESSION['error']) ) {
echo('<p style="color: red;">'.$_SESSION['error']."</p>\n");
unset($_SESSION['error']);
}
?>
</body>
</html>
答案 0 :(得分:-1)
正如我在评论中所说的那样
"A" "B" "C" "D" "E" "F" "G" "H" "I" "L" "K"
"1" 2.59 23.08 4.61 10.32 5.61 0.05 0.34 24.04 19.34 5.76 4.27
"2" 23.31 1.84 15.34 1.23 0 0 6.13 12.88 6.13 17.18 15.95
"3" 9.47 0 13.68 9.47 0 0 0 2.11 5.26 6.32 53.68
"4" 2.16 29.99 4.58 7.92 0.92 0 0 8.97 16.57 12.05 16.83
"5" 5.4 76.35 2.06 8.87 0 0 0.26 0.39 0.9 2.7 3.08
"6" 8.24 30 7.65 0 1.18 0 0 4.71 22.94 23.53 1.76
以html形式{{1}}将解决您的问题。