在着陆页中获取HTTP_REFERER - 带回登陆页面网址

时间:2016-05-24 15:14:41

标签: php http-referer

我有一个带有表单的目标网页。该表单具有对php文件的表单操作。我将客户端填写的所有字段发送到api,如下:

$input_email = isset($_POST['email']) ? check_plain($_POST['email']) : 'None';
$input_name = isset($_POST['name']) ? check_plain($_POST['name']) : 'None';
$input_website = isset($_POST['website']) ? check_plain($_POST['website']) : 'None';
$input_website = strtolower($input_website);
$input_content = isset($_POST['content']) ? check_plain($_POST['content']) : 'None';
$previous = $_SERVER['HTTP_REFERER'];

正如您在最后一行中所看到的,我从页面中获取了HTTP_REFERER。但这样做会带回目标网页的网址,而不是目标网页的引荐网址。 (例如:如果我的目标网页是example.com,而客户从google.com到达那里我希望以前有$ google.com,而是我有example.com)

有什么方法可以让它发挥作用吗? 另请注意,我知道使用HTTP_REFERER

时遇到的问题

1 个答案:

答案 0 :(得分:2)

所以这里发生的是你的初始页面加载有(假设的)正确的http引用,但是一旦用户发布表单,引用者就会成为你自己的域名

在着陆页上的表单中,您可以按照以下方式执行操作

<?php if (isset($_SERVER['HTTP_REFERER'])): ?>
<input type="hidden" name="http_referer" value="<?= $_SERVER['HTTP_REFERER']; ?>" />
<?php endif; ?>

然后,当您进行后期处理时,您可以检查是否存在

$_POST['http_referer']

并采取相应行动