2017-04-15 143 views
0

我在這裏看到類似的問題,但沒有解決方案爲我工作。 我在WAMP和localhost中運行php 5.6。 當用戶正確登錄時,我以session_start()開始會話並將$_SESSION['user'] 設置爲$_POST['username'],然後我使用header('Location: home.php')。 home.php開始於session_start()函數,然後我檢查是否設置了$_SESSION['user']。如果不是,我重定向到登錄頁面。但是,即使我使用有效的密碼和電子郵件登錄,由於未知原因,它總是將我重定向到登錄頁面。我試圖echo$_SESSION['user'],但它只是說它沒有定義。我該如何解決這個問題?PHP會話將不會保存

+0

你必須在用戶登錄之前開始會話 –

+0

請在這裏寫你的代碼,以便我們可以修復它並解釋你做了什麼錯誤。 –

回答

0

我們通常把session_start();header.php,現在的問題是,您分配$_POST['username']session,那是錯的,我們使用$_POST['']database檢索數據,所以,你必須鍵入SELECT查詢從username row獲取用戶名內database那麼row數據分配給會話這樣$_SESSION['username'] = $row['username'];

所以簡單地說,你的錯誤是使用$_POST['username']而不是SELECT荷蘭國際集團從database數據使用$_POST然後分配它爲session這樣的$_SESSION['username'] = $row['username'];

0

這是我要做的事:

include('dbconnect.php'); //php with server connection detail 
session_start(); 

$user_check = $_SESSION['login_user']; 

$ses_sql = mysqli_query($db,"SELECT username FROM users WHERE username = '$user_check' "); 

$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC); 

$login_session = $row['username']; 

if(!isset($_SESSION['login_user'])){ 
    header("location:login.php"); 
} 
0
  1. 也許你不能設置 'session_auto_start = ON' 在php.ini
  2. 首先檢查存在的php.ini中session_save_path,並沒有註釋掉Widnows中是否有一般默認是c:\ windows \ tmp,該目錄默認是不允許讀取其他用戶的。設置文件夾讓所有人都可讀寫
0

確保你的php.ini文件ILE有session.autostart = On

如果你使用Apache,並有正確的選項,你可以用含有這條線.htaccess文件使session.auto_start:的php_flag session.auto_start 1

一切的頂部做session_start()