我在这里看到过类似的问题,但没有一个解决方案适合我。
我在WAMP和localhost中运行php 5.6。
当用户正确登录时,我会使用session_start()
启动会话并设置$_SESSION['user']
到$_POST['username']
,然后我使用header('Location: home.php')
。
home.php以session_start()
函数开头,然后检查是否设置了$_SESSION['user']
。如果不是,我会重定向到登录页面。但是,即使我使用有效的密码和电子邮件登录,它也总是将我重定向到登录页面,原因是未知。我尝试echo
$_SESSION['user']
,但它只是说它未定义。我该如何解决这个问题?
答案 0 :(得分: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");
}
答案 1 :(得分:0)
答案 2 :(得分:0)
确保您的php.ini文件有session.autostart = On
如果您正在使用apache并拥有正确的选项,则可以使用包含以下行的session.auto_start
文件启用.htaccess
:php_flag session.auto_start 1
在所有事情的顶部做session_start()
。
答案 3 :(得分:0)
我们通常将session_start();
放在header.php
,现在的问题是您已将$_POST['username']
分配给session
,这是错误的,我们使用$_POST['']
要从database
检索数据,因此您必须输入SELECT
查询并从username row
内的database
获取用户名,然后分配{{} 1}}数据到这样的会话row
简而言之,您的错误是使用$_SESSION['username'] = $row['username'];
代替$_POST['username']
SELECT
使用database
的数据,然后将其指定为$_POST
,就像这样session