我有一个使用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";
有人可以帮助解决我需要添加到上述行的内容吗?或者我需要以不同的方式解决这个问题吗?
非常感谢! 安迪
答案 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。换句话说:除非你检查它,否则不要使用它。