簡體   English   中英

PHP會話將無法保存

[英]PHP session won't save

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

這是我的方法:

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");
}
  1. 也許您無法在php.ini中設置“ session_auto_start = on”
  2. 首先檢查php.ini session_save_path是否存在,如果Widnows中的默認默認目錄為c:\\ windows \\ tmp,則沒有注釋掉,默認情況下不允許該目錄讀取其他用戶,並設置文件夾供所有人讀取寫

確保您的php.ini文件具有session.autostart = On

如果您使用的是Apache,並且具有正確的選項,則可以使用包含以下內容的.htaccess文件啟用session.auto_start :php_flag session.auto_start 1

在所有內容的頂部執行session_start()

我們通常把session_start(); header.php ,現在的問題是您已將$_POST['username']分配給一個session ,這是錯誤的,我們使用$_POST['']database檢索數據,因此您必須輸入您的SELECT查詢並從database內的用戶username row獲取用戶名,然后將該row數據分配給類似$_SESSION['username'] = $row['username'];的會話$_SESSION['username'] = $row['username'];

簡而言之,您的錯誤是使用$_POST['username']而不是使用$_POSTdatabaseSELECT數據,然后像這樣將其分配為session $_SESSION['username'] = $row['username'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM