我有一个购物车产品页面,如果一个人点击产品加入购物车按钮,他们将被重定向到登录页面。
成功登录后,我需要将用户发送回相同的产品页面。
我有一个购物车产品页面,如果一个人点击产品加入购物车按钮,他们将被重定向到登录页面。
成功登录后,我需要将用户发送回相同的产品页面。
一种简单的解决方案是在跳转到登录页面前将“返回”URL存储在会话变量中。登录页面将检查会话变量是否存在,然后在使用 header location 重定向将用户返回到相关的 URL 之前,取消该变量。
例如,在登录页面上可以这样使用:
// Successfully logged in...
$destURL = $_SESSION['kickurl'] ? $_SESSION['kickurl'] : '/index.php';
unset($_SESSION['kickurl']);
header('Location: ' . $destURL);
exit();
您需要跟踪每个页面的URL:
<?php $_SESSION['url'] = $_SERVER['REQUEST_URI']; ?>
现在可以使用以下代码:
<?php session_start();
if(isset($_SESSION['url']))
$url = $_SESSION['url']; // 上次访问页面的URL。
else
$url = "index.php"; // 默认情况下要重定向的页面。
header("Location: http://abc.com/$url"); ?.
在重定向到登录页面时,将返回的URL作为GET参数发送:
/login.php?return_url=%2Fcart%2Fproducts.php
当您重定向到登录页面时,请将拦截的URL(通常称为返回URL)放入会话变量(或其他适当的存储位置)。然后,在完成登录后,您可以重定向到此URL。
有时在登录过程中可以在网站查询字符串中看到返回URL。例如,如果您在未登录任何Google帐户时访问docs.google.com,则可以在查询字符串中看到“continue”值,如下所示:
https://www.google.com/accounts/ServiceLogin?service=writely&passive=1209600&continue=http://docs.google.com/&followup=http://docs.google.com/<mpl=homepage
保持
<input type="hidden" name="redirurl" value="<? echo $_SERVER['HTTP_REFERER']; ?>" />
并在表单提交中获取redirurl
的值。
if(isset($_REQUEST['redirurl']))
$url = $_REQUEST['redirurl']; // holds url for last page visited.
else
$url = "myprofile.php"; // default page
header("Location:$url");
redirurl
存储了先前的 Pageurl。对于注册和登录页面,保持会话以避免复制这些页面URL。