我是否可以在PHP中多次打开/关闭会话(如果可以,会出现什么问题)?
这就是我的登录过程的工作原理: authenticate.php我是否可以在PHP中多次打开/关闭会话(如果可以,会出现什么问题)?,php,session,redirect,login,http-headers,Php,Session,Redirect,Login,Http Headers,这就是我的登录过程的工作原理: authenticate.php sessionStart(); if (isset($_SESSION) && !empty($_SESSION['LOCATION'])) { $location = $_SESSION['LOCATION']; unset($_SESSION['LOCATION']); } else { $location = '//' . $_SERVER['SERVER_NAME']; } sess
sessionStart();
if (isset($_SESSION) && !empty($_SESSION['LOCATION'])) {
$location = $_SESSION['LOCATION'];
unset($_SESSION['LOCATION']);
} else {
$location = '//' . $_SERVER['SERVER_NAME'];
}
session_write_close();
sessionStart();
$userIsOnline = isset($_SESSION['ID']);
session_write_close();
sessionStart();
if (!$userIsOnline) {
// Get the user from the database
// Validate the user's password
$_SESSION['ID'] = $user->id;
$_SESSION['UN'] = $user->un;
// ... more information
}
session_write_close();
header($location);
exit();
sessionStart函数的内容包括:
if (session_id() == '') {
session_name('MyWebsite');
session_set_cookie_params(86400, '/', $_SERVER['SERVER_NAME'], true, true);
session_start();
$_SESSION['LAST_ACTIVITY'] = time();
$_SESSION['CREATED'] = time();
}
然后在我网站的每个页面顶部:
sessionStart();
print_r($_SESSION);
$_SESSION['LOCATION'] = $_SERVER['REQUEST_URI'];
session_write_close();
打印一个空数组。因此,出于某种原因,它正在重定向期间擦除我的会话数组?有人有什么想法吗
另外,CREATED和LAST_活动的值来自。如果不是HTTPS未使用的问题,而是会话cookie设置为安全,那么我的另一个想法是更改
if (session_id() == '') {
session_name('MyWebsite');
session_set_cookie_params(86400, '/', $_SERVER['SERVER_NAME'], true, true);
到
我想知道它是否以不同的名称为您提供了会话ID,这就是为什么print\u r$\u Session;空空荡荡的。如果不是,我就没有主意了 你为什么总是要结束你的课程?是的,你当然可以。但是您共享的代码从来不会读取或写入会话,是吗?我已经指定了哪些函数正在写入会话。这就是我使用session\u write\u close而不是session\u destroy来避免死锁的原因。文档中说,前者结束当前会话并存储会话数据。那么它存储了什么呢?您可以将getHTTPLocationFromSession和setHTTPLocation中的代码添加到您的问题中吗?
if (session_name('MyWebsite') != 'MyWebsite') {
session_set_cookie_params(86400, '/', $_SERVER['SERVER_NAME'], true, true);