查看页面时,来自的PHP联系人正在发送空白电子邮件
有人能帮我阻止每次查看页面时发送空白电子邮件吗 这是我正在使用的代码查看页面时,来自的PHP联系人正在发送空白电子邮件,php,forms,contact,Php,Forms,Contact,有人能帮我阻止每次查看页面时发送空白电子邮件吗 这是我正在使用的代码 <?php // define variables and set to empty values $nameErr = $emailErr = $genderErr = ""; $name = $email = $gender = $comment = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) {
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = "";
$name = $email = $gender = $comment = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["comment"])) {
$commentErr = "Comment is required";
} else {
$comment = test_input($_POST["comment"]);
if (!preg_match("/^[a-zA-Z ]*$/",$comment)) {
$commentErr = "Please leave a comment.";
}
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
//create the body of the email
$body = "Name: {$_POST['name']}
\n\nEmail: {$_POST['email']}
\n\nComments: {$_POST['comment']}";
$body = wordwrap($body, 70);
// The mail function
mail('email@email.com', 'Contact Us Submission', $body, "From: {$_POST['email']}");
?>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name" class="text" value="<?php echo $name;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br>
Email: <input type="text" name="email" class="text" value="<?php echo $email;?>">
<span class="error">* <?php echo $emailErr;?></span>
<br>
Comment: <textarea name="comment" rows="3" cols="20"><?php echo $comment;?></textarea>
<span class="error">* <?php echo $commentErr;?></span><br>
<input type="submit" name="submit" value="Submit" class="submit">
<?php
//if everything is ok, print the message:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($name && $email && $comment) {
echo "<p>Thank you, <b>$name</b>, for contacting us.</p>
<p> We will email you back at <i>$email</i> in a couple days.</p>\n";
} else { //missing form value.
echo '<p class="error">Please go back and fill out the form again.</p>';
return false;
}
}
?>
</form>
将所有表单逻辑放在if($\u服务器[“请求方法”]=“POST”){
语句中。不仅仅是验证:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["comment"])) {
$commentErr = "Comment is required";
} else {
$comment = test_input($_POST["comment"]);
if (!preg_match("/^[a-zA-Z ]*$/",$comment)) {
$commentErr = "Please leave a comment.";
}
}
//create the body of the email
$body = "Name: {$_POST['name']}
\n\nEmail: {$_POST['email']}
\n\nComments: {$_POST['comment']}";
$body = wordwrap($body, 70);
// The mail function
mail('email@email.com', 'Contact Us Submission', $body, "From: {$_POST['email']}");
}
仅供参考,您完全可以接受。这是您在将此代码发布到生产环境之前应该解决的问题。您的所有$\u POST值是否都正确传递了?而不是(第一个)if($\u服务器[“REQUEST\u METHOD”]=“POST”)
您可以执行if(isset($\u POST[“submit”]))
只有在按下提交按钮时才会执行您的代码。另外,请检查是否有空值等。或者使用两个单独的页面以及我的建议和标题。从中我可以看到您的邮件();
函数没有放在任何大括号中,因此当有人浏览页面时总是会运行。由@johncode给出的答案将给出最佳解决方案。所有的$-POST值都被正确传递。我将尝试使用if(isset$-POST['submit']),而不是我所拥有的。我没有考虑添加邮件();大括号内的函数。我也会尝试。谢谢大家!那会有用;-)你觉得怎么样?只是大声思考;-)另一个可行的选择。使用PHP TMTOWTDI。=)TMTOWTDI-是的。我们是在说“猫”还是“兔子”?(如何剥皮)咧嘴笑-这就是邪恶的,谢谢,我会尝试这个建议!