我是否可以在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

这就是我的登录过程的工作原理:

authenticate.php

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