2014-12-03 58 views
0

我正在嘗試製作身份驗證腳本,以將記錄的/未記錄的用戶重定向到適當的頁面,但會導致重定向循環。我有兩個頁面index.php,它具有登錄表單和mobile.php,其中包含有效用戶的內容。爲了驗證我對的index.php使用會話的用戶身份驗證會導致重定向循環

session_start(); 
if (isset($_SESSION["username"]) && isset($_SESSION["userid"])) { 
    header("location: mobile.php"); 
    exit(); 
} 

和mobile.php的第一個行的第一個行這個代碼是

session_start(); 
if(!isset($_SESSION["username"])){ 
    header("location: index.php"); 
} 

但我不知道爲什麼它引起重定向循環。 以下是一些截圖。 謝謝你的時間。 here you can see the redirects here are the headers being sent

下面是一些的index.php代碼,這些代碼線被隨後的形式登錄。在驗證功能中,我所做的只是檢查用戶名和密碼是否有效,如果是,則重新生成會話ID,並設置會話變量用戶名和用戶ID。並返回true。

if(isset($username) && isset($password)){ 
    $username = preg_replace('/[^a-zA-Z0-9]/', '', $username); 
    $password = preg_replace('/[^a-zA-Z0-9]/', '', $password); 
    $returnmsg = validate($username,$password); 
    if($returnmsg===true){ 
     // header("location: mobile.php"); 
     exit; 
    } else { 
     $returnmsg = 'Invalid username or password.'; 
    }   
} 
+0

在index.php重定向後添加'exit();'。同時在index.php中轉儲掉沒有重定向的會話變量 – vaso123 2014-12-03 08:43:17

+0

適合我!清除所有cookie並重新啓動瀏覽器後,必須在其他代碼行 – Rizier123 2014-12-03 08:44:41

+0

中使用var_dump($ _ SESSION);在session_start()之後;結果是空數組。所以索引頁面不應該重定向並繼續,但它會重定向,爲什麼? – rkrara 2014-12-03 08:54:55

回答

0

Allways退出位置標題後。

session_start(); 
if(!isset($_SESSION["username"])){ 
    header("location: index.php"); 
    exit(); 
} 
+0

它是否有所作爲,據我所知,隨着標題的來臨,它會重定向。謝謝。 – rkrara 2014-12-03 08:49:21

+0

但仍有可能嘗試輸出某些內容。所以做一個退出只是爲了確保你的程序做你期望的事情。 – 2014-12-04 09:34:49