аутентификация — PHP HTTP базовая авторизация Выйти

Я использовал базовую аутентификацию 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]