0
/** 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
,因为这是我访问的最后一页。它的功能使我在没有访问url的情况下登录(浏览器,如果有人向我建议,我会访问它)。我不希望这种事发生!我想在请求注销以防止它出现之前设计一个弹出警报。但我可以使用的其他选项是什么,以便用户在访问该页面时不会立即注销?我看到有人在尝试注销之前不显示警报的网站。他们在后端做什么?退出代码运行,如果浏览器提示url
仅退出'发布'请求。 – Federkun
@Federkun听起来不对。这意味着我必须为我的注销按钮'
' – shnisaka'''''''用户只需在某处添加“”即可注销其他用户。至少,在查询字符串上添加一个'csrf/token'。 – Federkun