会话变量未设置

时间:2015-05-07 10:31:09

标签: php session

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

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

来自admin配置文件:

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();

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

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

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

我不确定我做错了什么。

谢谢!

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

谢谢!

2 个答案:

答案 0 :(得分: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设置是否允许会话变量存储在您的服务器中

答案 1 :(得分: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");

  // **Change here**
   session_start();
   session_name(MY_SESSION_NAME);