2012-07-17 79 views
0

我的php項目的人我想檢查登錄頁面會話的狀態..如果它未設置,我想用戶登錄。 我已經將此代碼添加到登錄頁面,但它沒有幫助,因爲它循環。如何檢查當前的PHP會話設置或未設置

if (strlen(session_id()) < 1) { 
    ?> 
    <script>window.location.href="login.php";</script> 
    <?php  
} 
elseif(strlen(session_id()) > 1){ 
    ?> 
    <script>window.location.href="index.php";</script> 
    <?php 
} 

現在我想另一件事是,如果會話已經開始,如果用戶手動嘗試去登錄頁面上的地址欄,他應該被重定向回該當前頁面。

如果他沒有登錄,他應該被重定向回登錄頁面,如果他試圖直接打開任何頁面。

而且這個新的疑問是
傢伙IM使用WAMP的服務器來運行我的PHP設計項目已經使用PHP會議在我的項目,現在,當從一個項目一個用戶登錄會話獲取設置,如果在同一臺PC如果用戶打開一些沒有鏈接的其他項目,他甚至可以直接登錄,即使他從一個項目中註銷,他也會從該PC上運行的所有其他項目中註銷。

+2

你想檢查一個特定的會話值,而不是一個會話的存在..如果$ _SESSION ['logged_in'] == 1 .... – 2012-07-17 19:49:19

+0

喜歡什麼和怎麼樣? – 2012-07-17 19:50:03

+0

k.so在初始登錄期間,我應該設置logged_in = 1,並在登錄頁面上進行比較,並在註銷時將其清空。 – 2012-07-17 19:51:48

回答

1

試試這個:

<?php 
    session_start(); 
    if(isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == 1) { 
     //session is set 
     header('Location: /index.php'); 
    } else if(!isset($_SESSION['logged_in']) || (isset($_SESION['logged_in']) && $_SESSION['logged_in'] == 0)){ 
     //session is not set 
     header('Location: /login.php'); 
    } 
?> 

在答覆上述評論,是你當用戶登錄編輯代碼,以反映它應該創建一個會話變量。

+0

傢伙,如果我使用PHP的頭('位置:/login.php');'nt重定向正確,如果我使用JavaScript窗口再次定位其循環。 – 2012-07-17 20:07:07

+0

使用標題時是否出現錯誤?你能發佈你的完整代碼嗎? – Lukas 2012-07-17 20:13:17

+0

firefox向我顯示這個頁面沒有正確重定向..但標題的東西適用於我的其他項目。 – 2012-07-17 20:14:17

1

要被檢查特定會話值,而不是一個會話的存在..

if ($_SESSION['logged_in']==1){ 

// 
}else{ 

// 
} 

設置$ _SESSION [「LOGGED_IN」]第1對日誌和取消它(或設置到0)註銷

0
  1. 請記住包含session_start();在每個頁面的頂部通過$ _SESSION得到變量SET在會話中的值[「比如」],否則您將無法在會話變量值, 或

  1. 另一種方法是使用session_start();裏面的config.php文件,並將該文件包含在需要會話的每個頁面的代碼頂部,否則U將無法獲得SESSION變量的值。