Саня
Guest
Про HTTP authentication with PHP
Заранее извиняюсь за демогогию.
Есть сайт, на котором используется HTTP authentication with PHP типа
У авторизованного пользователя есть возможность изменить свои данные, в том числе имя пользователя и пароль.
Если он их изменяет, то программа просит по новой залогиниться. Это происходит от того, что браузер посылает скрипту старые значения переменных $_SERVER["PHP_AUTH_USER"] и $_SERVER["PHP_AUTH_PW"], которые не совпадают с изменёнными данными.
Поскольку переменные $_SERVER["PHP_AUTH_USER"] и $_SERVER["PHP_AUTH_PW"] хранятся в браузере, то из скрипта их изменить не возможно.
Стало быть, чтобы сделать так, чтобы пользователю после изменения своих данных не надо было снова логиниться, надо изменить всю систему авторизации.
Всё ли правильно в моём рассуждении? Есть ли, всё-таки, какая-нибудь возможность, не меняя систему авторизации пользователей, сделать так, чтобы после данных действий пользователю не приходилось перелогиниваться?
Заранее извиняюсь за демогогию.
Есть сайт, на котором используется HTTP authentication with PHP типа
PHP:
<?php
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
$r = mysql_query("SELECT id FROM users WHERE username=$_SERVER['PHP_AUTH_USER'] AND password=$_SERVER['PHP_AUTH_PW']");
if (mysql_num_rows($r) == 0) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
} else {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
?>
Если он их изменяет, то программа просит по новой залогиниться. Это происходит от того, что браузер посылает скрипту старые значения переменных $_SERVER["PHP_AUTH_USER"] и $_SERVER["PHP_AUTH_PW"], которые не совпадают с изменёнными данными.
Поскольку переменные $_SERVER["PHP_AUTH_USER"] и $_SERVER["PHP_AUTH_PW"] хранятся в браузере, то из скрипта их изменить не возможно.
Стало быть, чтобы сделать так, чтобы пользователю после изменения своих данных не надо было снова логиниться, надо изменить всю систему авторизации.
Всё ли правильно в моём рассуждении? Есть ли, всё-таки, какая-нибудь возможность, не меняя систему авторизации пользователей, сделать так, чтобы после данных действий пользователю не приходилось перелогиниваться?