[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация
myconstitution
Здравствуйте, друзья.

Есть админка, её вход охраняет файлик lock.php, в котором прописана проверка логина и пароля (сравнение с записью в таблице MySQL), если все ок, то пропускает и наоборот.

Так вот проблема в том, что достаточно мне один раз правильно пароль ввести, и он почему-то больше не спрашивается при повторных обращениях к ../admin/index.php , а сразу заходит.

Это ж так нельзя, а вдруг придется заходить в админку с постороннего ПК..

ps:я думал что при закрытии браузера, lock.php должен вновь спрашивать логин и пароль, разве не так?
pps: можно ли средствами .htaccess как-то способствовать поставленной задаче (при каждом новом обращении к файлику ../admin/index.php спрашивать логин и пароль).

(да и данные входа я не кешировал)



Спустя 17 минут, 46 секунд (28.09.2010 - 12:18) Rand написал(а):
Обычно данные об авторизации хранятся в сессии. В браузер устанавливается кука с идетификатором сессии, которая по умолчанию должна удалятся после закрытия браузера. Если после закрытия/открытия браузера вы всё ешё авторизованны - значит кука не удалилась. Сложно говорить не видя скрипта.

Спустя 7 минут, 38 секунд (28.09.2010 - 12:25) inpost написал(а):
myconstitution
Ты знаком с Кукисами? Или lock.php ты просто скопипастил откуда-то? smile.gif
Как ты думаешь, сколько видом "lock.php" мы видели за свою жизнь? Откуда мы можем знать, что именно там написано? =)
.htaccess тут не нужен! Нужно открывать файл lock.php и учебник по Cookie. Далее за пару часиков всё поймешь.

Спустя 42 минуты, 50 секунд (28.09.2010 - 13:08) myconstitution написал(а):
Вы правы, lock.php я взял именно готовый. Считал, что еще рано заниматься безопасностью (знаний мало было). Видимо настало время уделить этому время.

Если говорить о коде, то вот он на Ваш суд:

#соединение с БД
include("blocks/db.php");

if (!isset($_SERVER['PHP_AUTH_USER']))
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}

else
{
if (!get_magic_quotes_gpc())
{
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}

$query = "SELECT pass FROM users WHERE
login='"
.$_SERVER['PHP_AUTH_USER']."'";

$lst = @mysql_query($query);

if (!$lst)
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}

if (mysql_num_rows($lst) == 0)
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}

$pass = @mysql_fetch_array($lst);

if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
}



ps: что лучше при авторизации кукисы или создавать сессии?

Спустя 7 минут, 34 секунды (28.09.2010 - 13:16) vital написал(а):
Использовать оба. Тем более что при старте сессии, кукисы часто создаются сами(если так настроено).

Спустя 14 минут, 15 секунд (28.09.2010 - 13:30) inpost написал(а):
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.