// если пользователь не авторизован
if (!isset($_SESSION['user_id'])) {
// то проверяем его куки
// вдруг там есть логин и пароль к нашему скрипту
if (isset($_COOKIE['login']) && isset($_COOKIE['password'])) {
// если же такие имеются
// то пробуем авторизовать пользователя по этим логину и паролю
$login = mysql_real_escape_string($_COOKIE['login']);
$password = mysql_real_escape_string($_COOKIE['password']);
// и по аналогии с авторизацией через форму:
// делаем запрос к БД
// и ищем юзера с таким логином и паролем
$query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}' AND `password`='{$password}'
LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
// если такой пользователь нашелся
if (mysql_num_rows($sql) == 1) {
// то мы ставим об этом метку в сессии (допустим мы будем ставить ID пользователя)
$row = mysql_fetch_assoc($sql);
$_SESSION['user_id'] = $row['id'];
// не забываем, что для работы с сессионными данными, у нас в каждом скрипте должно присутствовать session_start();
}
else {
// только мы не будем давай ссылку на форму авторизации
// вдруг человек и не хочет был авторизованым
// а пришел просто поглядеть на наши страницы как гость
}
}
}
Форум → Программирование → Пыхнуть хотите? → F.A.Q. → Авторизация пользователей в полном смысле этого слова.
Авторизация пользователей в полном смысле этого слова.
-
4 октября 2010 г. 15:54, спустя 3 минуты 11 секунд
has, вот эту проверку надо в начале каждого скрипта засунуть. -
4 октября 2010 г. 18:52, спустя 2 часа 58 минут 12 секунд
как это толку нет?
оно проверяет куки, если все хорошо - стартует сессию
а дальше уже проверяется сессия, не надо куки каждый раз дергатьвсе умрут, а я изумруд -
28 октября 2010 г. 13:41, спустя 23 дня 18 часов 48 минут
Здраствуйте!!! Просмотрел ваш пример авторизации, он мне он очень понравился!!! Помогите на основе вашего примера сделать доступ группе пользователей!!! Что то, типа такого: пользователь admin принадлежит к группе admins, и может видеть всю информацию на закрытой страничке (страницах) пользователь: user пренадлежит группе users, и может на той же закрытой страничке (страницах), видеть только то, что ему разрешено увидеть. Заранее спасибо!!! -
-
28 октября 2010 г. 14:02, спустя 2 минуты 53 секунды
Alex-Onis, гугли Zend_Acl, но это наверно будет сложновато для тебя пока что -
28 октября 2010 г. 15:28, спустя 1 час 25 минут 28 секунд
Да сложновато!!! Надо ли создавать еще одну таблицу для групп в Mysql используя Zend_Acl, если да то какую?
Alex-Onis, гугли Zend_Acl, но это наверно будет сложновато для тебя пока что -
28 октября 2010 г. 19:28, спустя 4 часа 34 секунды
Alex-Onis, ничего сложно нет, я уверен что вы даже ни читали про Zend_Acl раз такие вопросы появляются.
Спустя 6 сек.P.S. Можно создавать, можно не создавать) -
-
9 декабря 2010 г. 11:23, спустя 41 день 16 часов 49 минут
Подскажите по безопасности. Сейчас у меня в каталоге www лежит каталог админ, в админ лежат управляющие скрипты (добавить рубрику, удалить и т.п.), там же лежит каталог со скриптами - authmy. Нужно мне что-то делать для безопасности (добавить какой-нибудь htaccess или еще что)?
И попутно как правильно быть с файлом подключения к БД?
у меня в главном каталоге www находится каталог inc в котором лежат db.inc, function.inc и menu.inc.
Сейчас уже кое что прочел и понял что это ахтунг, и нужно переименовать inc в php и закинуть туда попутно htaccess. Надо что-то еще сделать? Как вобще все правильно сделать? Как вы обычно делаете? -
9 декабря 2010 г. 20:45, спустя 9 часов 22 минуты 25 секунд
deny .htaccess и deny в конфиге nginx, если есть, будет достаточно.
можно в принципе и не переносить в подкаталог, а задать условие по маске файлаιιlllιlllι унц-унц -
25 января 2011 г. 22:01, спустя 47 дней 1 час 15 минут
Вопрос по безопасности кода.
Хотел поставить ваш код, так как нравиться простотой. Но как защитится от такого …<?php
session_start();
$_SESSION['user_id'] = 1;
header('Location: index.php');
?>
Тест показал, что если знать номер пользователя, то можно зайти. -
25 января 2011 г. 22:26, спустя 25 минут 13 секунд
хранить в сессии специальный хеш, для этого отвести в базе данных спецаильную ячейку для этого хеша, при авторизации записывать авторизационный хеш в базу данных, параллельно записав его в сессию, потом проверять, если хеш, взятый из сессии существует в базе, то взять данные пользователя из базы, у которого был найден этот хеш
при написании этого поста ни один хеш не пострадал, слово хеш было использовано 7 разYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
26 января 2011 г. 2:02, спустя 3 часа 35 минут 45 секунд
Спасибо, извиняюсь за глупый вопрос, совсем забыл. =( -
26 января 2011 г. 3:59, спустя 1 час 57 минут 25 секунд
от какого такого?
Вопрос по безопасности кода.
Хотел поставить ваш код, так как нравиться простотой. Но как защитится от такого …<?php
session_start();
$_SESSION['user_id'] = 1;
header('Location: index.php');
?>
Тест показал, что если знать номер пользователя, то можно зайти.
как кто-то может что-то записать в сессию? сессия хранится на серверевсе умрут, а я изумруд -
28 марта 2011 г. 19:28, спустя 61 день 14 часов 28 минут
Удалил юзера из базы, теперь браузер выдает такое:
Неверное перенаправление на странице
Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
Эта проблема может возникать при отключении или запрещении принятия кук.
Шо делать???
Пожалуйста, авторизуйтесь, чтобы написать комментарий!