[英]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");
}
確保您的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']
而不是使用$_POST
從database
中SELECT
數據,然后像這樣將其分配為session
$_SESSION['username'] = $row['username'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.