2014-05-01 79 views
0

我試圖創建一個登錄系統,然後在重定向到適當的頁面時輸入正確的詳細信息。PHP - 未定義的會話

session_start(); 

$result = mysqli_query($con, "my query"); 
if(mysqli_num_rows($result) == 1) 
{ 
    $_SESSION['username'] = $username; 
    header("Location: home.php"); 
} 
else 
{ 
    header("Location: login.php"); 
} 

但是,如果我輸入正確的信息,我得到: 「Undefined variable: _SESSION」。

我真的不知道這裏出了什麼問題。

+0

什麼是您的PHP版本? –

+0

'_SESSION'?會話變量的名稱是'$ _SESSION'。這是一個拼寫錯誤嗎?如果成功,該函數返回TRUE,所以嘗試讓一個變量接收返回值和'var_dump()'它。 –

+0

沒有PHP錯誤肯定會錯過$。我不知道爲什麼。 – user9993

回答

1

您需要確保在每個想要使用$_SESSION超全局數組的PHP文件的頂部啓動會話(session_start())。

+0

他的代碼已經在最頂部 – ILikeTacos

+0

@AlanChavez顯示session_start():在這個php文件的頂部,不是他被重定向的文件(我猜)。 – potashin

+0

在此之前,請考慮檢查它是否已啓動。 'if(!session_id())session_start();',否則可能會出現警告,如下所示:* Session已經啓動*。 – Rolice

1

這聽起來像是session_start()呼叫失敗。最常見的原因是你已經開始輸出到瀏覽器。如果在打開<?php標記之前有空白或HTML,或者在致電session_start()之前有任何種類的echo/print/printf型呼叫,則會發生這種情況。

確保會話始終首先啓動的一種方法是使用自動預置的文件,並使該文件的全部內容爲<?php session_start();。爲此,請設置auto_prepend_file INI標誌。這必須在任何PHP文件加載之前設置,因此您需要使用.htaccessphp.ini文件。

+0

是的,這是它被引導到的文件的問題,謝謝。 – user9993

+0

所以這個問題已經回答了@ user9993?如果是這樣,請將其標記爲已解決。 –