【问题标题】:session variables not being set未设置会话变量
【发布时间】:2015-05-07 10:31:09
【问题描述】:

我的会话变量未设置有问题。文件已创建,但它们是空白的。

我的会话文件设置在公共 www 上方的目录中。根。登录表单位于根目录中。管理页面位于子目录中。我设置了两个配置文件来反映每个部分的不同路径。 Session() start 在每个页面上都被调用。然而,一旦我登录并被重定向到管理区域,vardump 就会反映一个空的会话数组。

来自管理配置文件:

define("MYSQLADMIN", "../../etc/mysqli.inc.php");
define("MY_SESSION_NAME", "endangeredspecies");
ini_set("session.save_path","../../mySessionFolder");
ini_set('session.cookie_lifetime','0');
//ini_set('session.cookie_secure','1');
ini_set('session.cookie_httponly','1');
ini_set('session.use_only_cookies','1');
ini_set("session.entropy_file","/dev/urandom");
session_name(MY_SESSION_NAME);
session_start();

设置会话变量的代码位于登录页面的包含文件中(位于文档根目录中)(包含文件在其上方)。会话设置代码示例:

$_SESSION["member_id"] = $member["user_id"]; //unique
$_SESSION["email"] = $member["user_email"];

当重定向工作时,块正在执行。

我不确定自己做错了什么。

谢谢!

编辑:删除重定向后,错误消息似乎表明这是一个路径问题。我的虚拟主机上的人建议我使用绝对路径,这似乎有效。但如果它也有更好的做法,我可能会改变我调用 session_start() 的位置。感谢帮助

谢谢!

【问题讨论】:

  • 写 session_start();在您的页面顶部

标签: php session


【解决方案1】:

您必须在页面顶部添加session_start(),并且 然后做

ini_set('session.cookie_httponly','1');
ini_set('session.use_only_cookies','1');
ini_set("session.entropy_file","/dev/urandom");
session_name(MY_SESSION_NAME);

注意还要检查您的php.ini 设置是否允许会话变量存储在您的服务器中

【讨论】:

    【解决方案2】:

    您应该首先开始会话并指定名称...

       //ini_set('session.cookie_secure','1');
       ini_set('session.cookie_httponly','1');
       ini_set('session.use_only_cookies','1');
       ini_set("session.entropy_file","/dev/urandom");
    
      // **Change here**
       session_start();
       session_name(MY_SESSION_NAME);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多