如何在登录后重定向到相同的页面

5

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

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

6个回答

10

一种简单的解决方案是在跳转到登录页面前将“返回”URL存储在会话变量中。登录页面将检查会话变量是否存在,然后在使用 header location 重定向将用户返回到相关的 URL 之前,取消该变量。

例如,在登录页面上可以这样使用:

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

@Navruk 谢谢 - 希望一切顺利。 :-) - John Parker

3

您需要跟踪每个页面的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"); ?.

1

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

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

在 login.php 中,您解码 return_url 参数(/cart/products.php),并在成功登录后将用户发送到该页面。

1

当您重定向到登录页面时,请将拦截的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/&ltmpl=homepage


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。


-1
你可以使用用户浏览器的来源(referer)将用户发送回他们来自的页面:
``` header('Location: ' . $_SERVER['HTTP_REFERER']); ```

不可靠;不能保证浏览器提供此值或其正确性。 - Core Xii
也就是说,如果HTTP_REFERER是一个本地URL而不是远程URL ;) - Caspar Kleijne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接