0

我有一个使用 POST 的 php 联系表格,我想在表格中自动包含引用页面,即链接到联系表格的网站。这通常在我的网站内。

例如,

www.website.com/nothere.php 返回 404.php(以 www.website.com/nothere.php 作为地址)

在 404 页面上,我有一个指向 feedback.php 的链接,这是一个联系表格。

我希望提交的表单中包含引用 URL(在本例中为“www.website.com/nothere.php”)。

我知道我可以使用以下代码:

$ref = getenv("HTTP_REFERER");

因此,我将其添加到页面顶部的 php 中(这是一个片段):

$SendTo = "web@website.com";
$Subject = "Website Feedback";
$FromString = "From: ".$_POST['eaddress']."\r\n";
$ref = getenv("HTTP_REFERER");

但是我如何编码 indhold 以便将推荐信息打印在电子邮件上?

$Indhold .= "Referring page: ".$_POST['$????']."\n";

有人可以帮助我在上面的行中添加什么吗?还是我需要以不同的方式解决这个问题?

非常感谢!安迪

4

3 回答 3

2

在您的联系表单中放置一个隐藏的输入字段,其中包含引用者:

<form ...>
...
<input type="hidden" value="<?php echo $_SERVER['HTTP_REFERER'] ?>" name="referer" />
...
</form>

然后您可以$_POST['referer']在发送电子邮件时访问它。

于 2012-12-13T09:39:46.543 回答
1

好吧..您确实可以为此使用 $_SERVER['HTTP_REFERER'] 。要包含它,只需编写如下内容:

<input type="hidden" name="referer" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />

在您的联系表格中。

然后,当您撰写消息时,只需执行以下操作:

$Indhold .= 'Referring page: '.$_POST['referer']."\n";
于 2012-12-13T09:41:33.760 回答
1

在你做任何事情之前,你应该知道这$_SERVER['HTTP_REFERER']是由客户设置的。这意味着它可以包含任何东西。如果您确实需要知道引荐来源网址,那么至少要确保它是一个 URL,并且它不指向任何网站。

例如:

$ref = filter_input(INPUT_SERVER, 'HTTP_REFERER', FILTER_SANITIZE_URL);
if ( ! preg_match('/^http:\/\/website.com/', $ref)) {
    $ref = '(Unknown URL...)';
}

如果您只是使用HTTP_REFERER而不先检查它,那么一些坏人可以将其设置为在机器上安装病毒的 URL。换句话说:除非你检查它,否则不要使用它。

于 2012-12-13T09:53:45.437 回答