联系表格,包括前一页的推荐

时间:2012-12-13 09:36:02

标签: php forms http-referer

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

例如,

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

在404页面上的

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

我希望提交的表单中包含引用网址(在本例中为“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";

有人可以帮助解决我需要添加到上述行的内容吗?或者我需要以不同的方式解决这个问题吗?

非常感谢! 安迪

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

嗯..你确实可以使用$ _SERVER ['HTTP_REFERER']。 要包括它,只需写下:

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

在您的联系表格中。

然后,当你撰写邮件时,只需:

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

答案 2 :(得分: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。换句话说:除非你检查它,否则不要使用它。