2011-01-27 132 views
5

我有一个购物车产品页面,如果一个人点击一个产品添加到购物车按钮,他们将被重定向到登录页面。如何在登录后重定向到同一页面

成功登录后,我需要将用户返回到相同的产品页面。

回答

11

一个简单的解决方案是在跳转到登录页面之前将“返回”URL存储在会话变量中。登录页面将检查会话变量的存在,然后在使用标题位置re-direct将用户返回到相关URL之前取消设置。

例如在登录页面上,你会使用:

// Successfully logged in... 
$destURL = $_SESSION['kickurl'] ? $_SESSION['kickurl'] : '/index.php'; 
unset($_SESSION['kickurl']); 
header('Location: ' . $destURL); 
exit(); 
+0

我真的很喜欢你的回答 – Navruk 2011-01-27 12:30:58

+0

@Navruk谢谢 - 希望它顺利。 :-) – 2011-01-27 13:46:03

-1

您可以将用户发送回他们原来的页面,使用其浏览器的引用者:

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

1

发送在重定向到登录页面时返回为GET参数的url:

/login.php?return_url=%2Fcart%2Fproducts.php 

在login.php中,您解码了return_url参数(/cart/products.php),并在成功登录时发送用户。

1

当您重定向到登录页面时,将拦截的URL(通常称为返回URL)放入会话变量(或其他适当的存储)中。然后,登录完成后,您可以重定向到此URL。

您有时会在登录过程中看到网站querystrings中的返回URL。例如,如果您在未登录到任何Google帐户的情况下访问docs.google.com,则可以在查询字符串中看到“继续”值,如下所示:

https://www.google.com/accounts ?/ ServiceLogin服务= Writely的&被动= 1209600 &继续= HTTP://docs.google.com/ &随访= HTTP://docs.google.com/ & ltmpl =主页

3

你应该跟踪的网址每一页: 为:<?php $_SESSION['url'] = $_SERVER['REQUEST_URI']; ?>

现在使用一个: <?php session_start();
if(isset($_SESSION['url'])) $url = $_SESSION['url']; // url for last page visited. else $url = "index.php"; // page you want to redirect by default header("Location: http://abc.com/$url"); ?.

0

保持

<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。

相关问题