/** LOGOUT PROCESS **/
case logout:
if(isset($_SESSION['user'])){
unset($_SESSION['user']);
if(!empty($_COOKIE['remember'])){
list($selector, $authenticator) = explode(':', $_COOKIE['remember']);
$stmt = $db->prepare('DELETE FROM user_token WHERE selector = :selector');
$stmt->execute(['selector' => $selector]);
}
if(isset($_SERVER['HTTP_COOKIE'])){
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
}
}
header("Location: ".site_url,true,303);
exit();
break;
我有以上代码,用户访问:example.com/user/logout
来运行此过程。在我测试时,我注意到如果我输入example.com/user/lo
,我的浏览器会建议我转到example.com/user/logout
,因为那是我访问过的最后一页。它的作用是在没有我访问网址的情况下将其记录下来(如果有人向我建议的话,浏览器我想访问网址)。我不希望这发生!我想在设置注销之前设计一个弹出警报以防止它。但是我可以使用哪些其他选项,以便在访问该页面时用户不会立即注销?我见过有人尝试注销之前没有显示警报的网站。他们在后端做了什么?
答案 0 :(得分:0)
您可以使用post方法或ajax请求。目前您正在使用简单的get方法,并检查如果用户已登录,则只需注销用户。
1→您可以使用任何特定密钥的后退请求进行注销功能
2→您可以在页面上实现ajax时使用它。
您可以根据自己的选择使用任何方法。