2011-07-11 89 views
1

我知道這是2/3其他問題的重複,但我嘗試了所提出的解決方案,但它們並不適合我。我懷疑問題出在PHP.ini文件中,或者與服務器文件夾權限有關。會話未被存儲

登錄頁面:

<?php 

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

//EDIT: forgot to copy paste this, but it is in my code 
session_start(); 

if (isset($_POST['username']) && isset($_POST['password'])) { 
    //login function basically checks the posted username and password, then sets some 
    //session variables accordingly 
    login($_POST['username'], $_POST['password']); 
} 

if (isset($_SESSION['valid']) && $_SESSION['valid'] === true) { 
    header("Location: /HomePage/Home.php"); 
    exit; 
} 

... 

?> 

主頁:

<?php 

//EDIT: forgot to copy paste this, but it is in my code 
session_start(); 

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

if (!isset($_SESSION['valid']) || $_SESSION['valid'] !== true) { 
    header("Location: /index.php"); 
    exit; 
} 

... 

?> 

現在,這裏的怪異的一部分。根據螢火蟲,當我輸入一個有效的用戶名和密碼時,我被重定向到主頁(如預測),然後我被重定向回登錄頁面。我在主頁上做了一個var_dump會話來檢查,session是空的。

編輯2:當我登錄頁面上

echo "Session is " . session_id() . "<br />"; 

更換頭球攻門,SESSION_ID是空白。這是問題嗎?我如何解決它?

編輯:這是一個PHP的ini文件的問題,感謝您的幫助。

回答

5

我在任一PHP腳本中都看不到任何session_start()調用。在您調用該函數之前,您將不會進行會話(並且必須在每個使用會話的頁面上調用該會話)。

+0

對不起,沒有複製粘貼代碼正確地是我不好。 – BlackSheep

+0

你忘了包含哪些其他代碼? – ceejayoz

+0

無。我檢查了這一點。我知道我不清除/覆蓋會議任何地方。我知道我在頁面開始處有session_start,在任何輸出之前。 – BlackSheep

1

你必須調用session_start();或在php.ini配置session.auto_start

+0

對不起,沒有正確複製粘貼。 – BlackSheep

+0

嘗試在刷新頁面後檢查session_id()。它應該是一樣的。如果沒有 - 會話機制出錯。修改配置參數。 – Ostin