Почему не работает выход?

SBM

Новичок
Почему не работает выход?

Вот код

if (!isset($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Неверные имя пользователя и/или пароль!';
exit;
}
else
{
$sql='select * from `users` where `login`="'.$_SERVER['PHP_AUTH_USER'].'" and `passw`="'.$_SERVER['PHP_AUTH_PW'].'"';
$res=mysql_query($sql);
if(mysql_num_rows($res))
{
// тело страницы
}
else
{
echo "Неверные имя пользователя и/или пароль!";
unset($_SERVER['PHP_AUTH_USER']);
}
}

Т.е. хочется, чтобы после ошибочной авторизации выдавалось предупреждение, а потом при refresh введенное $_SERVER['PHP_AUTH_USER'] сбрасывалось и опять возникала авторизация...
 

Кром

Новичок
SBM
Почему бы тебе не выдавать сообщение об ошибке прямо в окошко авторизации:
PHP:
<?

if (!isset($_SERVER['PHP_AUTH_USER'])) 
{
	header('WWW-Authenticate: Basic realm="Введите логин пароль."');
	header('HTTP/1.0 401 Unauthorized');		
	exit;
}
else
{
	if(('test' == $_SERVER['PHP_AUTH_PW']) && ('test' == $_SERVER['PHP_AUTH_USER']))
	{
		echo 'page';
	}
	else 
	{
		header('WWW-Authenticate: Basic realm="Логин пароль неправильный! Вы должны ввести корректный логин и пароль для получения доступа к ресурсу"');
		header('HTTP/1.0 401 Unauthorized');
		echo 'Логин пароль неправильный! Вы должны ввести корректный логин и пароль для получения доступа к ресурсу';
		exit;
	} 
}

?>
 

SBM

Новичок
SelenIT
Да на свежую голову, это я уже понял, но ночью было хуже %)

Кром
спасибо, пжалуй так и оставим...

-~{}~ 18.03.06 12:54:

Автор оригинала: Кром
SBM
Почему бы тебе не выдавать сообщение об ошибке прямо в окошко авторизации:
а как теперь "разлогиниться" ?

-~{}~ 18.03.06 13:12:

Теперь, чтобы осуществить выход, как я понимаю, можно только поменять регион realm? Но как при этом будут себя вести все остальные открытые "авторизированные" окна?
 

Кром

Новичок
Как разлогинится, ты можешь поискать на форуме. Это все обсуждалось много раз.
 

SBM

Новичок
Кром
разлогинился. но проблема в том, что из главного окна все остальные открываются по window.open с передачей всех переменных сессии. Если я закрываю сессию в главном окне убивая все переменные, то в других они остаются и как проверить, что сессия закрыта?
 

Кром

Новичок
Когда он разлогинится, поставь ему пометку на сервере. И при следующем запросе шли 401.
 

Кром

Новичок
В нормальной системе должна быть база со списком твоих пользователей. Там должны быть разные поля в том числе:аккаунт пользователя включен/выключен, дата последней смены пароля, дата последнего обращение к сайту и т.д.
Там же можешь добавить флаг о том, что пользователь разлогинился. Обыкновенное булевое 0/1. И проверять в дальнейшем это поле.
 
Сверху