HTTP_REFERER 将我转到同一页面

HTTP_REFERER sends me to the same page

我正在使用 php,我正在尝试向我的联系表单添加一项功能,该功能会向我发送联系页面之前的页面。 我在我的表单代码中添加了这行代码:

$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
$e_body = "Provenance : $httpReferer ";

这工作正常并向我显示 link,但问题是 link 是同一个联系页面 (http://...contact.php)。 我需要的是用户在进入 contact.php 页面之前访问过的页面。

有人知道为什么会这样吗? 有没有办法返回 2 页而不是返回 1 页?

谢谢:)

如果您真的想使用 $_SERVER['HTTP_REFERER'](请参阅其他评论),请在加载联系表单时将其存储在会话中,以便您可以在提交表单时使用它。

// Store the referring URL when loading the contact form.
$_SESSION['ref'] = $_SERVER['HTTP_REFERER']

// Redirect user back to referring URL when submitting the form.
header('Location: ' . $_SESSION['ref']);
unset($_SESSION['ref']);
die;

希望对您有所帮助。

header('Location: '.$_SERVER['HTTP_REFERER']);
die;

希望对您有所帮助

获得后退按钮的一种方法是在您的表单中添加一个隐藏的输入(看看您在联系页面中使用的是什么),然后使用 $_SERVER['REQUEST_URI'] 作为值并分配一个 session 数组并使用 sessions。也可以使用 Cookie,但我在示例中使用了 sessions。

先启动session:

<?php 
session_start();

// you can uncomment it to destroy previously set sessions
// session_destroy();

$_SESSION['back'] = $_SERVER['REQUEST_URI'];

?>

<form action="page2.php" method="post">
<input type="hidden" name="goback" value="<?php echo $_SERVER['REQUEST_URI'] ?>">
...
</form>

然后在第二页:page2.php

<?php 
session_start();

// Your POST information for your contact code goes here

echo "<a href=\"$_SESSION[back]\">Go back</a>";

?>

或者,要进行完整的 http 调用:

$link = "http://" . $_SERVER['SERVER_NAME'].$_SESSION['back'];

echo "<a href=\"$link\">Go back</a>";

旁注:正如我在评论中所述,

我知道返回 2 页的唯一方法是使用 javascript:window.history.go(-2),您可以在 PHP 中使用 echo 实现它。

另一种方法是使用面包屑方法,但这需要一些花哨的工作。

您也可以使用 header 进行重定向,但请确保您没有在 header 之前输出。

参考:


参考文献:


脚注:

What I need is the page that the user visited just before getting to that contact.php page.

如果没有页面的引用者,那么用户就没有办法返回,因为没有什么可以返回,除非他们使用浏览器的后退箭头按钮。

  • 推荐人是 link 一个人会从您的网站或其他网站点击的来源。

如果没有referer,可以使用javascript:window.history.go(-1).