2014-10-10 94 views
0

我有一個非常奇怪的問題與PHP會話功能。整個網站沒有保存會話

首先:它只適用於某些瀏覽器。像隨機選擇:在Windows上的FF,但不是在Mac上,在兩個平臺上的Chrome瀏覽器,safari不工作IE然而。

我有一個登錄腳本,如果登錄數據是正確的,我創建一個會話:

session_start(); 
$_SESSION['username'] = $user_info['username']; 

echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>"; 

當我在登錄腳本中的print_r,設置會話變量後,它適用於所有瀏覽器。但是,將用戶重定向到主網站後,會話是空的一些瀏覽器....

我從未有過這樣的問題,我真的不知道該怎麼辦...

+0

當您說「將用戶重定向到主網站「,這是一個不同的網站?你如何重定向他們? – 2014-10-10 10:18:53

+1

它不完全清楚你要求什麼。你是否用'session_start();'開始每一頁? – Dorvalla 2014-10-10 10:20:43

+0

當然是的。而它的域名和服務器相同,甚至不是子域名,對於沒有澄清這一點抱歉抱歉。 – 2014-10-10 10:22:14

回答

1
session_start(); 
$_SESSION['username'] = $user_info['username']; 

echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>"; 

如果這是什麼開始每一頁,我可以理解你刷新後沒有看到任何東西了,原因很簡單,你做什麼是你開始你的會話,你設置$ _SESSION變量用戶名$ User_info變量用戶名。而且你每次都這樣做。

但是考慮一下:在這一點上你的變量沒有被指定。也許你在登錄時設置它,但是,在下一次刷新時你會清除它,因爲你再次使用$ user_info ['username']來告訴它。在這種情況下,沒有任何東西需要調用,它將是一個空變量。因此,你的用戶名將是空白的。

您的會話['用戶名']也將爲空,因爲您告訴它會採取該信息。

既然你設置它,當你登錄,沒有必要respecify它,導致會話[「用戶名」]已經設置

編輯

,所以我現在要問,是什麼做你把你的數據庫?你是否將SessionId保存在數據庫中?因此,你可以做出這樣的事情。

session_start(); 

$Session=session_id(); 
$result1 = LoadSessionData($Session); 
$count=mysqli_num_rows($result1); 
if($count=="0"){ 
    $Time=time(); 
    $Ip = $_SERVER['REMOTE_ADDR']; 
    StartSessionData($Session,$Time,$Ip); 
    $_SESSION['Username'] = ''; 
}else{ 
    while ($row1 = mysqli_fetch_array($result1)){  
     $UserName = $row1['GebruikerNaam']; 
     if ($UserName == ""){ 
      $_SESSION['Username'] = ''; 
     } 
     $Time=time(); 
     $Time_check=$Time-3600; 
     $Ip = $_SERVER['REMOTE_ADDR']; 
     OnlineChecker($Session,$UserName,$Time,$Ip); 
    } 
} 

我希望你能跟着它,但我會盡力解釋。它檢查sessionId是否在數據庫中,如果不是,則將數據庫中的會話ID與時間戳,IP和會話用戶名一起添加到數據庫中,該用戶名設置爲空白。

否則,我檢查我回來,如果它有一個用戶名,使用它。如果它是空白的,會話用戶名將保持空白,導致它稍後使用該用戶名進行檢查,然後使用用戶名,時間等更新數據庫。

+0

我只是在登錄腳本中使用該代碼。在任何其他網站上,我只是使用print_r,看看它是否有效 – 2014-10-10 10:28:53

+0

你可以發佈然後你如何開始每一頁?導致你的錯誤可能在那裏。從技術上講,你現在向我們展示工作代碼:) – Dorvalla 2014-10-10 10:30:30

+0

基本上只是session_start();在每一頁上。我不保存數據庫中相關的任何會話。如果會話過期,用戶必須重新登錄。 – 2014-10-10 10:59:21