我遇到问题session_id()
每次在浏览器刷新/重启时返回一个新值。
阅读这篇文章here但它并没有解决问题。我做了那里提到的所有内容 - 浏览器接受cookie,权限设置正确,顺序请求没有更改参数值等。
这可能是指未正确使用session_name()
或session_set_cookie_params()
吗?或者可能是初始配置应该进行微调?
public static function init_session($name = FALSE, $lifetime = 10, $path = '/', $domain = FALSE, $secure = FALSE)
{
if (empty($name))
{
$name = APP_NAME;
}
if (empty($domain))
{
$domain = BASE_URL;
}
session_name($name);
session_set_cookie_params($lifetime, $path, $domain, $secure, TRUE);
session_start();
echo session_id();
}
答案 0 :(得分:1)
首先,您将会话生存期设置为 10秒,这意味着您每隔10秒钟就会获得一次新会话。
附注:关闭浏览器时某些浏览器放弃会话Cookie 的正常行为。
如果您需要扩展多个浏览器会话,则需要使用持久性Cookie 。
示例:
function init_session(/* ... */)
{
if(!isset($_SESSION)) {
session_start();
}
//Is it a running session?
if(isset($_SESSION['somevalue'])) {
//Everything is fine, session is loaded, no need to reload from cookies
} else {
if(isset($_COOKIE['yourcookiename'])) {
//reload session from cookie
} else {
create_session();
}
}
}
function create_session()
{
$_SESSION['somevalue'] = 1;
//setcookie
}
阅读http://www.allaboutcookies.org/cookies/cookies-the-same.html