我正在构建一个使用PHP通过POST方法发送的电子邮件联系表单。表单位于../register.shtml,操作重定向到../register.php
问题是,当register.php直接打开时(如不通过表单),空白的电子邮件会发送到我的收件箱。有没有办法阻止这种情况发生?
谢谢!
答案 0 :(得分:2)
在../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)
}
答案 1 :(得分:1)
if ($_SERVER['REQUEST_METHOD'] == "POST") {
.....
}
答案 2 :(得分:1)
在您的register.php脚本中,您应该检查帖子数据中是否有任何电子邮件,如果没有重定向回到表单:
<?php
if (!isset($_POST['message']) || $_POST['message'] == '') {
header('Location: register.shtml');
exit;
}
// the rest of your php code here
显然,将“消息”更改为表单中的某个实际字段。
您可能还想检查每个字段,或只检查所有必填字段。并且您可能希望更改重定向URL以告知用户他们需要填写哪个字段。
答案 3 :(得分:0)
你在寻找的是......
if(!empty($_POST)){
// send email logic
}
这样,只有在页面上发布了某些内容时才会发送电子邮件。