2011-07-11 32 views
1

假設我有兩頁Page1.php和Page2.php。有時,Page1.php會直接加載,有時它會從Page2.php重定向。我的問題是,我可以檢查Page1.php是直接加載還是從Page2.php中重定向(如果查詢字符串未使用)如何在PHP中檢查頁面是直接加載還是從其他頁面重定向?

+0

什麼是你想要做/你爲什麼要這樣?也許還有另一種解決方案。 –

+0

這是因爲我有login.php頁面和validation.php頁面。在驗證頁面中,用戶名和密碼與數據庫值匹配,如果沒有,它會重定向到login.php頁面。所以在重定向時,我需要在登錄頁面顯示一些錯誤信息,如果沒有,我不需要。 – ANP

回答

7

在Page2.php中設置會話變量並在Page1中控制它.PHP

使page2.php

<?php 
session_start(); 
$_SESSION['from2'] = true; 
header('Location: /Page1.php'); 
?> 

page1.php中

<?php 
session_start(); 
if(isset($_SESSION['from2']) && $_SESSION['from2']) { 
    /* from Page2.php logic here */ 

    unset($_SESSION['from2']); 
}else{ 
    /* not from Page2.php */ 
} 
?> 
1

您可以閱讀全局變量$_SERVER['HTTP_REFERER']的值。

+1

如果對正確性的要求很低,這可能會奏效。 Referer字段在HTTP中是可選的,一些瀏覽器不會發送它們(我已經禁用了它,並且一些防火牆將它從請求中刪除)。 –

+0

我想你可以使用它,但不能用於關鍵應用程序(不可靠),因爲引用者可能被欺騙。 http://en.wikipedia.org/wiki/Referrer_spoofing。然後我認爲Emil使用會話的答案更安全。 – Alfred

+0

如果你沒有在URL中傳遞任何參數,這仍然是唯一的方法。當然你也可以嘗試存儲記錄當前頁面的cookies,但這也不是100%安全的。 – Gedrox

相關問題