会话变量不工作php

Ari*_*ant 14 php session session-variables

以下是我的登录页面的代码,其中登录脚本检查用户的真实性,然后使用标题功能重定向到收件箱页面.

<?php
session_start();

include_once('config.php');
$user=htmlentities(stripslashes($_POST['username']));
$password=htmlentities(stripslashes($_POST['password']));
// Some query processing on database    

if(($id_user_fetched<=$id_max_fetched) && ($id_user_fetched!=0)){
$_SESSION['loggedIn'] = 'yes';
    header("Location:http://xyz/inbox.php?u=$id_user_fetched");
    //echo 'Login Successful';
    }else{
        echo 'Invalid Login';
        echo'<br /> <a href="index.html">Click here to try again</a>';
        }
}else{
    echo mysqli_error("Login Credentials Incorrect!");
    }
?>
Run Code Online (Sandbox Code Playgroud)

inbox.php页面如下所示:

<?php
session_start(); 
echo 'SESSION ='.$_SESSION['loggedIn'];
if($_SESSION['loggedIn'] != 'yes'){
echo $message = 'you must log in to see this page.';
//header('location:login.php');
}
 //REST OF THE CODE

?>
Run Code Online (Sandbox Code Playgroud)

现在使用上面的代码,inbox.php总是显示输出:SESSION =您必须登录才能看到此页面.这意味着没有设置会话变量或者inbox.php无法检索会话变量.我哪里错了?

rev*_*evo 33

  1. 确保session_start();在调用任何会话之前调用.因此,安全的赌注是将其放在页面的开头,紧接在开始<?php标记之后的任何其他内容.还要确保在开始<?php标记之前没有空格/制表符.
  2. 在后header重定向,使用结束当前的脚本exit();(其他人也建议session_write_close();,并session_regenerate_id(true),你可以尝试那些为好,但我会用exit();).
  3. 确保在您用于测试的浏览器中启用了cookie.
  4. 确保register_globals关闭,您可以在php.ini文件上检查并使用phpinfo().请参阅关于如何将其关闭.
  5. 确保您没有删除或清空会话.
  6. 确保$_SESSION超级全局数组中的键不会被覆盖.
  7. 确保您重定向到同一个域.所以从a重定向www.yourdomain.comyourdomain.com不会进行会话.
  8. 确保你的文件扩展名是.php(它发生!).

重定向后PHP会话丢失

  • 我有同样的问题。原因:没有可用磁盘空间! (2认同)
  • #7 是关键,在 www 上登录,然后在没有 www 的 url 上进行测试会使会话消失! (2认同)

Vad*_*man 8

我有一段时间有同样的问题,很难搞清楚.我的问题是我的网站工作了一段时间,会议工作正常,然后突然间一切都破了.

显然,你的session_save_path()对我来说是/ var/lib/php5 /,需要具有正确的权限(用户运行php,例如www-data需要对目录的写访问权限).我不小心改变了它,彻底打破了会话.

运行sudo chmod -R 700 /var/lib/php5/然后sudo chown -R www-data /var/lib/php5/让php用户有权访问该文件夹.


Lui*_*elo 7

如果您使用连接脚本,也不要忘记session_start();在连接处使用,在注意到该问题之前遇到了一些麻烦。


Ari*_*ant 2

刚刚与托管服务商交谈,这是他们最终的问题。他说“您的帐户 session.save_path 未设置,因此出现问题。我现在为您设置。”

之后就可以正常工作了:)