Javascript 如果浏览器建议使用url,则会运行注销代码
我有用户访问的上面代码:Javascript 如果浏览器建议使用url,则会运行注销代码,javascript,php,Javascript,Php,我有用户访问的上面代码:example.com/user/logout来运行这个过程。在测试时,我注意到如果我键入example.com/user/lo我的浏览器建议我转到example.com/user/logout,因为那是我访问的最后一页。它的作用是:在我不访问url的情况下将我注销(如果有人向我建议,我猜浏览器会访问url)。我不想发生这种事!我想在请求注销之前设计一个弹出警报来阻止它。但是,我还可以使用哪些其他选项,以便用户在访问页面时不会立即注销?我见过一些网站在有人试图注销之前不显
example.com/user/logout
来运行这个过程。在测试时,我注意到如果我键入example.com/user/lo
我的浏览器建议我转到example.com/user/logout
,因为那是我访问的最后一页。它的作用是:在我不访问url的情况下将我注销(如果有人向我建议,我猜浏览器会访问url)。我不想发生这种事!我想在请求注销之前设计一个弹出警报来阻止它。但是,我还可以使用哪些其他选项,以便用户在访问页面时不会立即注销?我见过一些网站在有人试图注销之前不显示警报。他们在后端做什么?您可以使用post方法或ajax请求来完成同样的任务。目前,您正在使用SimpleGet方法,并检查用户是否已登录,您只需注销用户即可1->您可以使用任何特定键的post请求注销功能。
2->您可以在第页上使用相同的方法实现ajax。
根据您的选择,您可以使用任何方法 仅在
post
请求时注销。@Federkun这听起来不对。这意味着我必须为我的注销按钮提供一个表单
您不希望用户通过简单地在某处添加
就可以注销其他用户。至少,在查询字符串上添加一个csrf/token
。
/** 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;