如何解决刷新后会话数据不可用
我正在尝试使用 PHP 学习会话,在创建身份验证应用程序时,我发现当我进行硬刷新(单击 URL 并点击刷新)时,即使不是我设置的 3000 秒,会话数据也会丢失。我真的需要你的帮助。我已经被困在这里两天了,找不到任何解决方案。首先,我尝试在 PHP 实时服务器 localhost:3030 上尝试,然后也在实时托管站点上尝试,但仍然没有运气。请在这里帮助我。
<?php
session_name('auth_app');
session_start([
'cookie_lifetime' => 3000,]);
$loggedin = logged_value() ?? false ;
function logged_value() {
if(isset($_POST['username']) && isset($_POST['password'])) {
if('admin' == $_POST['username'] && 'a51e47f646375ab6bf5dd2c42d3e6181' == md5($_POST['password'])) {
return true;
}
}
}
$_SESSION['loggedin'] = $loggedin;
if(isset($_POST['logout'])) {
$_SESSION['loggedin'] == false;
session_destroy();
}
?>
<!doctype html>
<html lang="en">
<head>
...
</head>
<body>
<div class="container">
<div class="row">
<div class="column column-60 column-offset-20">
<h2>AUTH Example</h2>
<?php
if( true == $_SESSION['loggedin'] ) {
printf("<p>Hello %s,Welcome!</p>",$_POST['username']);
}else {
printf("<p>Hello %s,'Stranger' );
}
?>
</div>
</div>
<div class="row">
<div class="column column-60 column-offset-20">
<?php if(false == $_SESSION['loggedin']) : ?>
<form method="post">
<input type="text" name="username" id="username" placeholder="Username">
<input type="password" name="password" id="password" placeholder="Password">
<button type="submit" class="button-primary" name="submit">Login</button>
</form>
<?php else: ?>
<form method="post">
<input type="hidden" name="logout" value="1">
<button type="submit" class="button-primary" name="submit">Logout</button>
</form>
<?php endif; ?>
</div>
</div>
</div>
</body>
</html>
解决方法
使用直接会话超时,因为会话开始不能计算秒cookie_lifetime
session_start();
header('Refresh: 3000; url=logout.php');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。