gpt4 book ai didi

php - 什么时候 session 数据可用?

转载 作者:搜寻专家 更新时间:2023-10-31 21:44:40 24 4
gpt4 key购买 nike

到目前为止,我有以下打开 session (php),

session_start() ;

foreach($_SESSION as $key => $value){
$alert .= '<br/>' . '['.$key.']='.$value ;
}

$alert .= '<br/>$_SERVER[MY_SERVER...]='.$_SERVER['MY_SERVER_GENERATED'] ;

if($_SESSION['MY_SERVER_GENERATED'] !== true ||
$_SERVER['REMOTE_ADDR'] !== $_SESSION['PREV_REMOTEADDR'] ||
$_SERVER['HTTP_USER_AGENT'] !== $_SESSION['PREV_USERAGENT']){
$alert .= 'session destroyed' ;
session_destroy() ;
}

if(isset($_SESSION['CREATED']) && (strtotime('now') - $_SESSION['CREATED']) > 300){//Delete expired sessions - seconds
$alert .= '<div class="error_box">Your session has expired!</div>' ;
$_SESSION = array() ;
}

session_regenerate_id();
$_SESSION['CREATED'] = strtotime('now') ;
$_SESSION['MY_SERVER_GENERATED'] = true ;
$_SESSION['PREV_USERAGENT'] = $_SERVER['HTTP_USER_AGENT'] ;
$_SESSION['PREV_REMOTEADDR'] = $_SERVER['REMOTE_ADDR'] ;

echo $alert ;

问题是 session 每次都被销毁。 $_SESSION 只是空的。什么时候可以运行上述检查?

糟糕,忘记说明我已验证 session 正在保存数据,但直到页面启动后才验证。因此 session 被销毁,因为 $_SESSION 数据全部为 null,因此条件评估为 false。例如,$alert 没有注册为其中存储了任何内容。

最佳答案

您的代码似乎有陷阱 22:

session_start() ;


if(!$_SESSION['MY_SERVER_GENERATED']){ <------- this will always be true
for a fresh session, so
session_destroy() ; <--------------------- this will always be executed

您的 session 数据永远没有机会填充。

关于php - 什么时候 session 数据可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com