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 实现它。
另一种方法是使用面包屑方法,但这需要一些花哨的工作。
$_SERVER['HTTP_REFERER']
并不完全可靠。
- 阅读:https://whosebug.com/a/6023980/ 为什么。
您也可以使用 header 进行重定向,但请确保您没有在 header 之前输出。
参考:
参考文献:
- http://php.net/manual/en/features.sessions.php
- http://php.net/manual/en/reserved.variables.server.php
脚注:
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)
.
我正在使用 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 实现它。
另一种方法是使用面包屑方法,但这需要一些花哨的工作。
$_SERVER['HTTP_REFERER']
并不完全可靠。- 阅读:https://whosebug.com/a/6023980/ 为什么。
您也可以使用 header 进行重定向,但请确保您没有在 header 之前输出。
参考:
参考文献:
- http://php.net/manual/en/features.sessions.php
- http://php.net/manual/en/reserved.variables.server.php
脚注:
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)
.