1

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

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

谢谢!

4

4 回答 4

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)

}
于 2012-10-17T17:42:39.017 回答
1
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    .....
}
于 2012-10-17T17:38:56.270 回答
1

在您的 register.php 脚本中,您应该检查帖子数据中是否有任何电子邮件消息,如果没有则重定向回表单:

<?php

if (!isset($_POST['message']) || $_POST['message'] == '') {
  header('Location: register.shtml');
  exit;
}

// the rest of your php code here

显然将“消息”更改为表单中的实际字段之一。

您可能还想检查每个字段,或者只检查所有必填字段。您可能希望更改重定向 URL 以告诉用户他们需要填写哪个字段。

于 2012-10-17T17:44:05.010 回答
0

您正在寻找的是...

if(!empty($_POST)){
  // send email logic
}

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

于 2012-10-17T17:40:47.897 回答