Default
Эксперт
Дата регистрации:
12.06.2012 15:20:27
Сообщений: 102
Доброго времени суток. Дело вот в чем: надо ограничить доступ к страницам для не зарегистрированных пользователей, как лучше это сделать? везде необходимо делать проверку типа:
<?php
session_start();
if(!$_SESSION[‘login‘] && !$_SESSION[‘id‘] && !$_SESSION[‘pass‘]){
//если нет сессии логина, ай-ди и пароля, то перенапровлять пользователя к станицы с авторизацией
header (“Location: vhod.php“);
?>
Так можно мли есть более актуальный способ?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Странная проверка, поскольку наличие данных не означает, что они правильные. Поэтому нужно ещё их и проверять. А вообще рекомендую написать отдельную функцию, которую и вызывать в if.
Default
Эксперт
Дата регистрации:
12.06.2012 15:20:27
Сообщений: 102
Так эти данные введенные пользователем будут проверены на странице авторизации регулярным выражением, и при успешной проверке пользователя перешлет, допусти, на room.php, где в свою очередь будет проверено этим что я тут изобразил на наличия сессии... или Вы имеете ввиду что-то другое?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
На каждом шаге должно проверяться всё от и до. При каждом обращении к странице нужно проверять правильность данных в сессии.
Default
Эксперт
Дата регистрации:
12.06.2012 15:20:27
Сообщений: 102
именно поэтому Вы советуете построить ф-цию, чтобы раз за разом не писать эту проверку на страницах? тогда посоветуйте из какие проверки будет содержать ф-ция для лучшей безопасности? в регулярных выражениях я не силен, но там можно сделать только английский или русский текст, составить минимальную и максимальную длину вводимых символов, убрать пробелы лишнии ну и сделать проверку чтобы не допустить SQL- иньекции и в случае чего, отправлять пользователя к форме с авторизацией, этого будет достаточно? И как я короче понимаю, эту проверку надо выполнять на каждой странице...
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Вы что проверяете? Надо проверить только на правильность логина и пароля в сессии. Ничего другого не нужно.
Default
Эксперт
Дата регистрации:
12.06.2012 15:20:27
Сообщений: 102
а как это сделать? проверить на empty ()? что-то путаться начинаю
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
http://myrusakov.ru/php-regauth-user.html
Default
Эксперт
Дата регистрации:
12.06.2012 15:20:27
Сообщений: 102
либо надо делать выборку из БД и проверять оттуда записи с записями в сессиях, либо надо еще читать о сессиях, так?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Надо делать выборку из базы, сравнивать это с тем, что хранится в сессии. Если всё совпадает, значит, правильно, иначе пользователь не авторизован.