[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация в админку сайта на базе cookies
brdm
Авторизация в админку сайта на базе cookies или сессии.

Давно использую авторизацию в админку своего движка на базе стандартного

header("WWW-Authenticate: Basic realm=\"Authentication Admin\"");
header("HTTP/1.0 401 Unauthorized");


Но дело в том, что такая штука работает только если php на сервере запущен только как модуль Апача.

Слышал звон да не знаю где он по поводу авторизации на базе cookies или сессии.

Подскажите пожалуйста как это делается (ссылками или примером кода)

Спасибо.



Спустя 15 минут, 51 секунда (20.07.2010 - 16:24) KaFe написал(а):
Ну это очень сложно. wink.gif
if ($_SESSION['admin'])
{

//админка тут

}
else
{
?>
<form action="" method="post">
Логин:<br><input name="login" value=""><br>
Пароль:<br><input name="pass" value="" type="password"><br>
<
br><img src="./kernel/capcha.php"><br>
Введите данные с картинки:<br>
<
input name="capcha" size="5" value=""><br><br>
<
input value="Войти" type="submit">
</
form>
<?php
if ($_POST)
{
if ($_POST['capcha'] == $_SESSION['capcha'])
{
if ($_POST['login'] == $global['login'] && $_POST['pass'] == $global['pass'])
{
$_SESSION['admin'] = $_POST['login'];
die(header ('location:'.HOST.'?module=kernel'));
} else echo 'Это админка, а не модуль для забавы ><';
} else echo 'Неверный код капчи.';
}
}

Надеюсь принцип понятен или объяснить.
Информацию по сессия читать тут http://www.php.su/functions/?cat=session
Также тут можно еще поглазеть http://www.php.su/phphttp/?methods

Спустя 6 минут, 54 секунды (20.07.2010 - 16:31) brdm написал(а):
Спасибо. Попробую разобраться.

Буду признателен еще за примерчик cookies.


Спустя 4 минуты, 14 секунд (20.07.2010 - 16:35) KaFe написал(а):
brdm
Цитата (brdm @ 20.07.2010 - 13:31)

Буду признателен еще за примерчик cookies

По моему куки лучше не использовать при работе с админкой. huh.gif

К онечно ты можешь сделать проверку на запись куков, если там куки не включены то вход в админку не возможен, у меня так кстати и сделано. wink.gif

Спустя 2 минуты, 15 секунд (20.07.2010 - 16:37) brdm написал(а):
Да вобщем все понятно. Зпускается сессия. Потом через пост - сессии присваивается логин (можно и пароль). Далее очевидно просто проверяется сессия и если она равна логину то админка сохраняется. При выходе нужно уничтожить сессию.
Правильно ли я понял?

Спустя 1 минута, 35 секунд (20.07.2010 - 16:39) brdm написал(а):
Еще вот подумал.. Не слишком ли это просто с точки зрения безопасности. Ведь сессия некоторое время будет хранить в себе реальный логин в админку.

Можно ли как то это сделать через хеш? И как это будет выглядеть в коде?

Вот набросал некоторый код

$key = sha1(microtime().mt_rand());
$hash = sha1($login.$key.$pass);

дальше форма в которой в скрытой форме передается $key
и в явном виде $login и $pass типа так..

"<form action='./handl.php' method='post'>Логин:<br>
<input type='hidden' name='key' value='
$key'>
<input name='login' value=''><br>
Пароль:<br><input name='pass' value='' type='password'>
<input value='Войти' type='submit'>
</form>"
;



Дальше допустим в handl.php делается обработка

if ($_POST['login'] == $login && $_POST['pass'] == $pass) 		
{
$hash = sha1($_POST['login'].$_POST['key'].$_POST['pass']);
$_SESSION['admin'] = $hash;
}


И далее вход в админку только если $_SESSION['admin'] == $hash

Насколько это правильно? И нужно ли это все?
Быстрый ответ:

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