我的会话变量未设置存在问题。文件已创建,但它们是空白的。
我的会话文件设置为进入公共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()的地方,如果它也是更好的做法。感谢帮助
谢谢!
答案 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);