PHP HTTP基本身份验证注销

时间:2017-01-13 04:39:25

标签: php authentication basic-authentication logout http-basic-authentication

我在登录时使用了PHP基本身份验证。

现在我必须在我们的网站上添加注销。

我使用全局变量计算时间,并在指定时间后返回401错误。

看起来像是退出。

但是,如果用户在身份验证窗口按下取消并刷新( F5 ),则验证成功。

即使我尝试删除PHP_AUTH_USER,但是,当用户刷新网络浏览器PHP_AUTH_USER时仍然设置。

这是我的(login.php)代码,每个页面都包含(login.php)

    <?php
    function auth( )
    {

        global $model;
        header('WWW-Authenticate: Basic realm=' . $model);
        header('HTTP/1.0 401 Unauthorized');    
        echo ("<div><b>401 Unauthorized</b></div></br>");
        echo ("<div>You must enter a valid login ID and password.</div>");
        exit();
    }
    $block = "AUTH_LOGIN";
    $hCGI = fsockopen ($sock_address, 0, $errno, $errstr, 10);
    $code = $GET_CODE . $API_CODE . $AUTH_LOGIN_CODE;
    send_cgi_params($hCGI, $code, "GET", $block, $list);
    recv_cgi_mesg($hCGI);
    parse_str($g_recv_buff);
    fclose($hCGI);
    if(!isset($_SERVER['PHP_AUTH_USER']) && $_REQUEST["user"] == "" && $_REQUEST["pwd"] == "")
    {
        fwrite($mjtest, "php auth user null \n");
        auth( );
    }
    else
    {
        $hCGI = fsockopen ($sock_address, 0, $errno, $errstr, 10);  
        if (!$hCGI)
        {
            echo "socket open fail ($errstr ($errno)) <br> \n";
        }
        else
        {
            if( !isset($_COOKIE['last_activity']) )
            {
                setcookie("last_activity", time(), time()+40 );
            }
            else
            {
                if ( (time() - $_COOKIE['last_activity'] > 20) ) 
                {
                     unset( $_SERVER['PHP_AUTH_USER'] );
                     unset( $_SERVER['PHP_AUTH_PW'] );
                     auth( );
                 }
                 else
                 {
                     setcookie("last_activity", time() );
                 }
            }

            if($_REQUEST["user"] == "")
            {
                $user   = $_COOKIE["auth_user"];
                $pwd    = $_COOKIE['auth_pw'];
            }
            else
            {
                $user   = $_REQUEST["user"];
                $pwd    = $_REQUEST["pwd"];         
            }
        }
//from here make a cgi params and send message. 
//
?>

0 个答案:

没有答案