我有一个简单的联系表单,用户在其中输入数据,表单将其发送到“mail.php”以传递到那里的电子邮件帐户。 “mail.php”文件与“index.html”一起位于我的根目录中,我遇到的问题是我不希望用户能够访问http://mydomain.com/mail.php http://mydomain.com/mail.php直接通过他们的浏览器,因为这只会发送一个空白表格,并可能被用来向我发送垃圾邮件。我真的很紧张试图找出一种只允许表单访问“mail.php”的方法。这就是我设置表单的方式:
<form method="post" action="mail.php">
<div class="row half">
<div class="6u"><input type="text" required autocomplete="off" name="name" placeholder="Name" /></div>
<div class="6u"><input type="email" required autocomplete="off" name="email" placeholder="Email" /></div>
</div>
<div class="row half">
<div class="12u"><textarea name="message" required placeholder="Message" rows="6"></textarea></div>
</div>
<div class="row">
<div class="12u">
<ul class="actions">
<li><input type="submit" class="button" value="Send Message" /></li>
</ul>
</div>
</div>
</form>
然后我的“mail.php”文件设置如下,成功标头是一个 html 页面,其中包含几行文本,让用户知道他们的电子邮件已发送,然后将其重定向回http://mydomain.com http://mydomain.com5秒后。
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent=" From: $name \n Message: $message";
$recipient = "[email protected] /cdn-cgi/l/email-protection";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("Location: success");
exit;
?>
我已经摆弄了 .htaccess 和无数其他东西,但我所做的一切似乎都不起作用 - 它要么完全阻止页面(以便表单也无法访问它),要么根本不阻止它。我也看过这个https://stackoverflow.com/a/409515/3366954 https://stackoverflow.com/a/409515/3366954但也不知道如何让它发挥作用。我对 html 和 php 很陌生,但到目前为止我已经设法弄清楚了其他一切。这次我错过了什么?
只需向您的 PHP 脚本添加一些验证即可。例如:
<?php
if(isset($_POST['name'], $_POST['email'], $_POST['message'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent=" From: $name \n Message: $message";
$recipient = "[email protected] /cdn-cgi/l/email-protection";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
header("Location: success");
exit;
}
?>
这将防止任何空白提交,而不需要您按引用页面进行过滤。作为一般规则,您应该always无论如何,验证用户输入,因为它是各种麻烦的根源(黑客攻击、错误、通常意外的行为)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)