2011-06-14 48 views
0

登陸我用:PHP會話不從網頁工作

<?php 
session_start(); 

if($_POST){ 
$csUSER='USERNAME'; 
$csPASS='PASSWORD'; 
$user=$_POST['user']; 
$pass=$_POST['pass']; 
if ($user==$csUSER) { 
    if ($pass==$csPASS){ 
     $_SESSION['cdb']="1"; 
     header("Location: /"); 
     exit; 
    } else { 
     $passerror='<span class="errormsg">Wrong Password.</span>'; 
    } // END IF PASSWORD 
} else { 
$usererror='<span class="errormsg">Wrong Username.</span>'; 
} // END IF USERNAME 
} // END IF $_POST 
?> 

爲了讓自己做的每一頁(包括在所有頁[返回頁首])管理任務:

<?php 
session_start(); 

if(isset($_SESSION['cdb'])){ 
$loggedn="WORD"; 
} 
?> 

這使我:

<?php 
if ($loggedn=="WORD") { WHATEVER } 
?> 

,並確保在(包括在所有後端頁)登錄時,我只能訪問到後端的網頁:

<?php 
// backend login check 
if($loggedn!="WORD") { 
header("Location: /"); // if not logged in, go to homepage 
exit; 
} 
?> 

問題是,它在我的電腦上工作完美,但我有另一臺電腦,我的妻子用於數據整理,它不保持登錄在她的電腦上。我們都使用FF(Fedora)。我已經在每一頁的代碼行了,幫助!

+0

她的瀏覽器中是否禁用了所有cookies? – sjobe 2011-06-14 19:18:21

+0

由於它可以在一臺機器上運行,但不能在另一臺機器上運行,您是否確保在您妻子的機器上啓用cookie? – 2011-06-14 19:19:17

+0

PHP會話默認使用cookie。你妻子的電腦上啓用了cookies嗎? – dunos 2011-06-14 19:19:38

回答

1

有幾件事情要檢查:

  1. 確保你開始用乾淨的石板。清除瀏覽器中的緩存和Cookie,以確保您沒有打開舊會話。
  2. 確保會話數據存儲在新機器上。會話數據通常存儲在/ tmp
  3. 確保沒有與會話相關的特定於客戶端的代碼。
+0

我不知道會話存儲在/ tmp中。清除臨時文件夾,它完美的工作..非常感謝。 – DaedBaet 2011-06-14 20:05:11

0

呼叫重定向到另一個頁面後出口功能,否則下面的代碼會被執行的,有什麼可以導致異常行爲。

if($loggedn != "WORD") 
{ 
    // redirect to login page 
    header("Location: login.php"); 
    exit; 
} 
// the following code will be executed if exit is not called 
... 
+0

謝謝你,馬丁。我在標題後添加了退出。 – DaedBaet 2011-06-14 20:04:29