我在登录时使用了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.
//
?>