2011-11-21 182 views
1

對不起,如果我沒有告訴你的代碼,因爲我不知道如何實現它。我只想知道,例如在YouTube中,當您想要對視頻發表評論時,您必須先登錄,那麼如何將您重定向到您要發表評論的上一個視頻頁面。我想我需要將上一頁的網址存儲到會話中,但如果用戶沒有登錄,我是否還可以跟蹤網址,對不起,我很困惑。我想這樣做在PHP中,任何人都可以幫我一下吧,在此先感謝:)返回註冊頁面登錄後

回答

0

你可以簡單地使用這樣的東西.. !!

當用戶需要重定向回頁面時,假設他想對post.php頁面發表評論,但是當他嘗試發表評論時,如果尚未登錄,它將重定向到登錄。,因此,在玉重定向他到登錄頁面,發送GET參數到登錄頁面就像

http://example.in/login.php?redirect_url=http://example.in/post.php

現在處理這個在頁面login.php中獲得參數,當憑據進行身份驗證你可以重定向他回到通過get參數發送的URL。

您的login.php可以是這樣的

$redirect_url = $_GET['redirect_url']; 
if(authenticated) 
{ 
    header("Location: $redirect_url"); 
} 
else 
{ } 

希望這有助於

0

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

這是最簡單的方法。它會自動將用戶重定向到他來自的頁面,以防啓動引用者(默認)。

+0

該儘快打破的使用輸入錯誤時他的密碼或身份驗證需要超過一個頁面。 –

+0

我知道,你是對的。我認爲$ _GET的方式比Olaf提到的要好得多。 – sascha

0

您可以將鏈接存儲在鏈接到您的登錄頁面的URL中。然後您可以讀取$ _GET值並相應地處理它。

+0

嗨,對不起,我有一個不好理解,你可以進一步詳細請 – smith

0

我倒是建議傳遞迴URL作爲GET參數:

$login_url = 'http://example.com/login.php?return=' . rawurlencode($_SERVER['REQUEST_URI']); 

使用會話兩點之間定期發送信息的使用打開多個標籤能夠儘快毀了瀏覽體驗。

登錄後,使用header()生成HTTP重定向:

if(isset($_GET['return']) && substr($_GET['return'], 0, 1)=='/'){ 
    header('Location: http://example.com' . $_GET['return']); 
    exit; 
}else{ 
    header('Location: http://example.com/'); 
    exit; 
} 
+0

嗨,爲什麼substr($ _ GET ['return'],0,1)=='/'? – smith

+0

只是爲了確保騙子不使用我們的登錄表單重定向到其他網站,並可能讓用戶在該網站重新輸入密碼。 –

+0

謝謝但返回字符串的第一個字符中沒有'/'?對不起我的不理解 – smith

0

由於每個頁面必須檢查自己的登錄用戶呢(認證),我不會明確地稱之爲登錄頁面。相反,目標頁面將在必要時調用它,並將其自身存儲爲登錄目標(會話)。

例子:

article.php需要調用article_comment.php,但評論頁面需要與login.php登錄。登錄頁面應該在成功登錄後調用評論頁面。

  1. article.php直接調用article_comment.php
  2. article_comment.php頁面檢查用戶是否已經登錄,並在必要時調用login.php。在它重定向到login.php頁面之前,它將自己的登錄目標存儲爲$_SESSION['loginTarget'] = 'article_comment.php';
  3. 登錄頁面成功完成後,會調用登錄目標。 header('Location: '.$_SESSION['loginTarget'], true, 303); exit;

這樣不會中斷聯繫的自然的方式(article.php可以直接調用article_comment.php)。由於登錄目標存儲在會話中,因此您可以輕鬆地在登錄頁面上執行錯誤處理,甚至可以創建新的用戶帳戶。對登錄用戶的檢查無論如何都做了,爲什麼不使用它在必要時請求登錄?