停止发送基于PHP的电子邮件

时间:2012-10-17 17:37:00

标签: php forms email post

我正在构建一个使用PHP通过POST方法发送的电子邮件联系表单。表单位于../register.shtml,操作重定向到../register.php

问题是,当register.php直接打开时(如不通过表单),空白的电子邮件会发送到我的收件箱。有没有办法阻止这种情况发生?

谢谢!

4 个答案:

答案 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
}

这样,只有在页面上发布了某些内容时才会发送电子邮件。