我正在构建一个使用 PHP 通过 POST 方法发送的电子邮件联系表单。表单位于 ../register.shtml,操作重定向到 ../register.php
问题是,当 register.php 直接打开时(如不是通过表单),一封空白电子邮件会发送到我的收件箱。有没有办法阻止这种情况发生?
谢谢!
../register.shtml
在页面上的表单中创建一个隐藏的输入字段。然后,在 上register.php
,检查是否设置了隐藏输入值。如果是,则处理该表单。如果未设置(用户不是来自表单),则重定向回原始页面。
这是一些代码:
在../register.shtml
<form action="register.php" method="POST">
... your form fields
<input type="hidden" name="cameFromForm" value="Yes" />
</form>
然后,在顶部../register.php
if(!isset($_POST['cameFromForm'])) {
header('location: http://www.example.com/register.shtml');
exit();
} else {
.... your send mail code (or whatever register.php does)
}
if ($_SERVER['REQUEST_METHOD'] == "POST") {
.....
}
在您的 register.php 脚本中,您应该检查帖子数据中是否有任何电子邮件消息,如果没有则重定向回表单:
<?php
if (!isset($_POST['message']) || $_POST['message'] == '') {
header('Location: register.shtml');
exit;
}
// the rest of your php code here
显然将“消息”更改为表单中的实际字段之一。
您可能还想检查每个字段,或者只检查所有必填字段。您可能希望更改重定向 URL 以告诉用户他们需要填写哪个字段。
您正在寻找的是...
if(!empty($_POST)){
// send email logic
}
这样,只有在页面上发布了某些内容时才会发送电子邮件。