所以我现在已经尝试解决这个问题很长一段时间了,而且我已经结束了。
因此,在我正在处理的Web应用程序中,基本思想是用户登录,然后在$ _SESSION中创建会话。我可以通过print_r($_SESSION)
在索引页面上看到它的内容。
索引是一些jQuery UI选项卡,这些选项卡链接到某些子目录,如content/index.php
或action/index.php
在这些选项卡中,尝试上述打印语句根本不返回任何内容。它根本无法看到会话。
在索引上,我有一个名为sec_session_start()
的函数已被使用,我认为这可能是一个问题。代码是这样的:
function sec_session_start() {
$session_name = 'sample'; // Set a custom session name
$secure = SECURE;
// This stops JavaScript being able to access the session id.
$httponly = true;
// Forces sessions to only use cookies.
if (ini_set('session.use_only_cookies', 1) === FALSE) {
header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
exit();
}
// Gets current cookies params.
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
$cookieParams["path"],
$cookieParams["domain"],
$secure,
$httponly
);
// Sets the session name to the one set above.
session_name($session_name);
session_start(); // Start the PHP session
session_regenerate_id(); // regenerated the session, delete the old one.
}
考虑到这一点,我唯一能想到的是session.use_only_cookies
的INI设置就是问题所在。这可能阻止我访问标签内的会话吗?我继承了这一点,并且不知道为什么它不让我访问会话。
编辑1:
的index.php:
<?php
print_r($_SESSION); //prints everything
?>
通过标签通过ajax调用检索action / index.php或content / index.php:
<?php
print_r($_SESSION); //returns nothing.
?>
编辑2:
我想出了这个问题。事实证明,会话存储在cookie中并加密。通过session_name();
访问它然后在每个页面上启动会话,我可以看到变量。