该函数在每个可能的页面上都被调用,它类似于 main 函数,它检查用户是否登录,所以它在任何事情之前执行。它只是检查用户是否已登录或设置了 cookie,如果用户已登录或设置了 cookie,它会启动会话并设置 2 个会话。
但是在函数外输出会话它会输出未设置会话,但显示 cookie 和会话。
如果我回显,再解释一下
$_SESSION['user']
$_SESSION['logedin']
它输出
Undefined variable: _SESSION
但如果我这样做
print_r($_COOKIE);
它输出
Array ( [PHPSESSID] => 1rane5lksksp7s4u8p8fh0h194 [user] => fe8dc8f2a7e88746fd8586d489646958 )
这意味着会话和cookie都已设置
但是为什么当我请求会话时它会显示未定义的变量,并且它会在第一次刷新网站后注销用户。
是不是因为 session_start 在函数内部,如果 session_start 在函数内部被调用,它只会在该函数满足 else 条件或函数内部的 if 语句时被调用,并且一旦 session_start 被调用,它就会在浏览器或每个页面上调用你需要使用 session_start 来启动会话,而不是您可以使用设置的会话。因为如果我将 session_start 放在函数之外,它可以完美地工作,但即使用户没有登录,会话也会启动。