在着陆页中获取 HTTP_REFERER - 返回着陆页 url

getting HTTP_REFERER in a landing page - brings back the landingpage url

我有一个带有表单的着陆页。该表单对 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。但是这样做会带回着陆页的 url,而不是着陆页的引荐 url。 (例如:如果我的着陆页是 example.com 并且客户从 google.com 到达那里,我希望 $previous 具有 google.com,但我却具有 example.com)

有什么办法让它起作用吗? 另请注意,我知道使用 HTTP_REFERER

的问题

所以这里发生的事情是您的初始页面加载具有(假定的)正确的 http 引荐来源网址,但是一旦用户 post 表单,引荐来源网址成为您自己的域

在着陆页的表单中,您可以按照这些行做一些事情

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

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

$_POST['http_referer']

并采取相应行动