Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果浏览器建议使用url,则会运行注销代码_Javascript_Php - Fatal编程技术网

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;