Вопрос № 116585: Здравствуйте, эксперты! Надо на сайт поставить авторизацию, но так, чтобы авторизованный мог везде бродить, а гость - только там, где можно. Как это сделать средствами PHP или Html?...
Вопрос № 116.585
Здравствуйте, эксперты! Надо на сайт поставить авторизацию, но так, чтобы авторизованный мог везде бродить, а гость - только там, где можно. Как это сделать средствами PHP или Html?
Для авторизации на сайте могу предложить вам PHP скрипт "Access User Class". Это удобная система для защиты ваших веб-страниц и регистрации пользователей.
Основные возможности скрипта: * регистрация и вход пользователей,
* восстановление пароля,
* активация учетной записи по электронной почте.
Загрузить скрипт (86 Кб.) вы можете по ссылке ниже.
Успехов и с праздниками!
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Делай добро сам, и всегда помни что сделали для тебя!
Ответ отправил: Web-Extrime (статус: Практикант)
Ответ отправлен: 02.01.2008, 10:41 Оценка за ответ: 5 Комментарий оценки: Спасибо, теперь будем осваивать!
Отвечает: Емельянов Данил Юрьевич
Здравствуйте, Даниил Цветков!
Вас также с Новым годом!!!
Тут есть множество вариантов реализации. Во-первых нужно определиться, где будут храниться переменные с логином и паролем авторизированных пользователей. Тут 3 варианта:
1) В COOKIE .Вариант неплохой, можно потом автоматически заносить в поля ввода логин и пароль этого человека, но что делать если COOKIE отключены?
2) В сессии. Лично я часто использую этот вариант, однако он не самый надежный, ведь сессии могут украсть.
3) В серверный переменных $_SERVER['PHP_AUTH_USER'] для логина и $_SERVER['PHP_AUTH_PW'] для пароля. Вызываются они через заголовки:'WWW-Authenticate: Basic realm="Запрещенная зона"', 'HTTP/1.0 401 Unauthorized'. Минус в том, что при посылке заголовков появляется окно броузера для ввода логина и пароля, но если это не портит дизайн сайта, советую этот метод.
Теперь, определившись с методом хранения данных, мы создадим форму для авторизации.
1) Для варианта 1 и 2.
<form action="auth.php" method="post">
Логин:<input type="text" name="login"><br>
Пароль:<input type="text" name="pass"><br>
<input type="submit" value="ok">
</form>
2) Для варианта 3. Предлагаю создать функцию user_check() для сверки логина и пароля сервера с необходимыми данными. Эту функцию я привел как пример, для ее применения, ее нужно переделать в соответствии с требованиями по безопастности. Примерно так. Соединения с БД должно уже быть установлено.
function user_check()
{
$log=$_SERVER['PHP_AUTH_USER'];
$pass=$_SERVER['PHP_AUTH_PW'];
$res=mysql_query("SELECT * FROM users where login='$log' and pass='$pass' ");
if(!$res)return false; else return true;
}
if(!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !user_check())
{
header('WWW-Authenticate: Basic realm="Запрещенная зона"');
header('HTTP/1.0 401 Unauthorized');
echo "Ошибка ";
exit;
}
Ну и наконец нужно добавить проверку данных на каждой страницы, чтобы ее видели только зарегестрированные пользователи. В варианте 3 эта проверка уже сделана, а для остальных ниже:
<?
include("func.php");
if(!user_check($_SESSION['login'],$_SESSION['pass']))
{
exit;
}
Файл func.php описан в приложении.
Ну вот примерно так реализуется авторизация различными способами.
?>
Приложение:
--------- Жить хорошо, а хорошо жить еще лучше!
Ответ отправил: Емельянов Данил Юрьевич (статус: 5-ый класс)
Ответ отправлен: 02.01.2008, 10:57 Оценка за ответ: 5 Комментарий оценки: Спасибо!