2011-01-27 147 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。

相關問題