我正在使用php而我正在尝试向我的联系表单添加一项功能,该功能会向我发送联系页面之前的页面。 我在表单代码中添加了这行代码:
$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
$e_body = "Provenance : $httpReferer ";
这很好,并向我显示了一个链接,但问题是该链接是同一个联系页面(http://...contact.php)。 我需要的是用户在访问该contact.php页面之前访问过的页面。
任何人都知道为什么会这样? 有没有办法可以返回2页而不是1页?
谢谢:)
答案 0 :(得分:2)
使用后退按钮的一种方法是向表单添加隐藏的输入(看到您在联系页面中使用的内容),并使用$_SERVER['REQUEST_URI']
作为值并将会话数组分配给它和使用会话。也可以使用Cookie,但我在我的示例中使用了会话。
首先开始会议:
<?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']
并非完全可靠。您也可以使用标题重定向,但请确保您在标题前没有输出。
价:
参考文献:
脚注:
我需要的是用户在访问该contact.php页面之前访问过的页面。
如果该页面没有引用,则用户无法返回,因为除非他们使用浏览器的后退箭头按钮,否则无法返回。 / p>
如果没有引用者,您可以使用javascript:window.history.go(-1)
。
答案 1 :(得分:0)
如果您确实想使用$_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;
希望这有帮助。
答案 2 :(得分:0)
header('Location: '.$_SERVER['HTTP_REFERER']);
die;
希望它能帮到你