[英]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.