Как уничтожить PHP_AUTH_USER и PHP_AUTH_PW

Кром

Новичок
Как уничтожить PHP_AUTH_USER и PHP_AUTH_PW

Пробовал и так
session_start();
session_unset();
session_destroy();
и так
unset($PHP_AUTH_PW);
unset($PHP_AUTH_USER);
ничего не выходит. Пока в броузере ИЕ страницу не закрыть, эти переменные остаются. Что делать?
 

trent

Developer
IMHO перенаправлять на http://user:pass@host:port/
где user:pass "левые", например: anon:anon
 

Кром

Новичок
не совсем понимаю как это поможет
у меня есть страница авторизации которая начинается с
if(!$PHP_AUTH_USER && !$PHP_AUTH_PW)
{

header('WWW-Authenticate: Basic realm="Realm-Name"');
header("HTTP/1.0 401 Unauthorized");

} далее идет авторизация и перенаправление

я прихожу на нее из страницы logoff.php в которой я пробовал варианты указанные выше. Но почему то переменные остаются...
 

RomikChef

Guest
будет интересно почитать этот топик
 

netdog

net @
> будет интересно почитать этот топик
> тест PHP_AUTH_PW
> работает

=))))))))))))))))
 

Compote

Guest
это напиши в файле logout.php
PHP:
<html>
<head>
<title>
Logout
</title>
</head>
<body onload="CloseSelf();">
<script language="JavaScript"> 
function CloseSelf() 
{ 
window.opener = top; 
window.close(); 
} 
</script> 
<a href="" onclick="window.close()">Для Logout жми сюда</a> 
</body>
</html>
и проблем с переменными точно не будет =)
 

Кром

Новичок
RomikChef, я уже искал по форуму и все эти темы просмотрел. Но там в основном решаются проблемы с прохождением авторизации, а не с выходом из авторизованной зоны. Там было одно решение, которое trent мне уже сказал. Но оно мне не подходит. Это система используется внутри фирмы и ссылка та в виде //katalog/index.php, а при использовании http://user: pass@host: port/ - ссылка меняется.

Еще я искал здесь:
http://www.xpoint.ru/archive/threads/67/13489.html
http://www.php.net/manual/en/features.http-auth.php
http://ronet.ru/sess.htm
http://www.webclub.ru/archive/website/article-144.html
http://detail.phpclub.net/2001-08-09.htm

Compote, спасибо. Это решение действенно, но хотелось бы чтобы перенаправление шло на страницу авторизации. Т.е. как то так:
PHP:
session_start();
session_unset();
session_destroy();
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
Setcookie(session_name(),"");
Setcookie("SESSID","");
Header("Location: auth.php");
 

RomikChef

Guest
session_start();
session_unset();
session_destroy();
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
Setcookie(session_name(),"");
Setcookie("SESSID","");
Header("Location: auth.php");
ты не мог юы пояснить немного вербальными комментариями этот поток сознания?
 

RomikChef

Guest
поясни-ка свой гениальный способ авторизации, и место, которое в нем занимают эти переменные
 

Кром

Новичок
Это я привел код файла logoff.php с которого я попадаю на auth.php, который у меня выглядит так:
PHP:
<?
if(!$PHP_AUTH_USER && !$PHP_AUTH_PW)
{
	header('WWW-Authenticate: Basic realm="Realm-Name"');
	header("HTTP/1.0 401 Unauthorized");
} else {
	
	$HOST = "***";
	$USER = "***";
	$PASS = "***";
	$db_name = "***";
	
	$link = mysql_connect($HOST, $USER, $PASS);
	mysql_select_db($db_name);
	
	$query = "SELECT * FROM users WHERE LOGIN='".$PHP_AUTH_USER."' AND PASS='".$PHP_AUTH_PW."' LIMIT 1 ";
	$user_result = mysql_query($query);
	if(mysql_num_rows($user_result) > 0)
	{
		$line = mysql_fetch_array($user_result);	
		$select = $line[ID];
		session_start();
		$valid_user = "admin";
		session_register("valid_user");
		
		header("Location: index.php?stat=0");
		Setcookie ("user_cookie",$select);
		exit();
	}

	header('WWW-Authenticate: Basic realm="Realm-Name"');
	header("HTTP/1.0 401 Unauthorized");
	
}
?>
	<center><b>Not authorized</b></center>
а в этом файле у меня идет проверка на наличие этих двух переменных, который надо уничтожить
 

Кром

Новичок
Compote, проверил сейчас твой вариант в Опере, так к сожалению проблема остается.
 

RomikChef

Guest
ты не можешь пояснить - а зачем тебе два способа авторизации?

Нет, я как раз сейчас работаю над их объединением.
но оно работает совсем не так, как у тебя
 

Кром

Новичок
Это - чтобы открылось окно с вводом пароля:
header('WWW-Authenticate: Basic realm="Realm-Name"');
Это - для того, чтобы отслеживать администратора на всех страницах:
session_start();
А это - для вывода различных данных, которые к нему относятся:
Setcookie ("user_cookie",$select);

>Нет, я как раз сейчас работаю над их объединением.
>но оно работает совсем не так, как у тебя
не понял, что ты имел ввиду...
 

Кром

Новичок
young, я там был, я не могу делать так,

Логаут делается такой ссылкой
http://logout:logout@host/logout.php

у меня ссылки относительные и обращение к сайту идет из локальной сети
 

Compote

Guest
Кром,
Это Работает:
IE 6.0 SP1, IE 6.0, IE 5.5, Mozilla 1.0 - 1.2.1, Netscape 6.0 - 7.01, Opera 4.02 - 7.01

Не работает:
IE 5.0, IE 4.0, Netscape 3.04 - 4.8

Если используешь Basic Auth, то нормальный логаут ты сделать не сможешь. Используй сессии или куки
 

Кром

Новичок
Compote, я проверял на Opera 6.04, где все окна открываются в одном окне броузера. Окно закрывается, но броузер - нет, поэтому, видимо, PHP_AUTH_USER и PHP_AUTH_PW остаются.

Возможно действительно стоит отказаться от Basic Auth
 
Сверху