PHP会话不会保存

时间:2017-04-15 13:03:02

标签: php session

我在这里看到过类似的问题,但没有一个解决方案适合我。 我在WAMP和localhost中运行php 5.6。 当用户正确登录时,我会使用session_start()启动会话并设置$_SESSION['user']$_POST['username'],然后我使用header('Location: home.php')。 home.php以session_start()函数开头,然后检查是否设置了$_SESSION['user']。如果不是,我会重定向到登录页面。但是,即使我使用有效的密码和电子邮件登录,它也总是将我重定向到登录页面,原因是未知。我尝试echo $_SESSION['user'],但它只是说它未定义。我该如何解决这个问题?

4 个答案:

答案 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)

  1. 也许你不能在php.ini
  2. 中设置'session_auto_start = on'
  3. 首先检查现有的php.ini session_save_path,如果Widnows中有一般默认值为c:\ windows \ tmp,则没有注释,默认情况下不允许该目录读取其他用户。并设置文件夹为每个人都要读可写

答案 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