Я не очень понимаю одну вещь, связанную с сессиями. Вот пользователь залогинился, создалась сессия, в переменных $_SESSION['login'] и $_SESSION['password'] сохранены логин/пасс.
Я разбираю один скрипт авторизации, тут на каждой странице автор соеденяется с базой и проверяет логин/пароль. А нафига собственно? Разве нельзя просто проверять эти 2 переменные на наличие/отсутствие данных?
1. gephaest - 17 Сентября, 2011 - 09:52:42 - перейти к сообщению
2. OrmaJever - 17 Сентября, 2011 - 11:06:21 - перейти к сообщению
как я понял скрипт проверяет по базе логин и пароль а потом записывает их в сесии?
Ну вот например мы заходим на index.php, скрипт проверяет даные в бд и записывает их в сесии, дальше мы переходим по сайту и всё нормально, а если мы откроем брауез и запустим например news.php? Если там нету авторизации то сесия будет пустая и мы будем как гость пока не откроем index.php (в котором такая проверка есть, и этот файй заполнит сесии), а также мы можем зайти на любой другой файл и чтобы всегда мы были авторизированы.
Ну вот например мы заходим на index.php, скрипт проверяет даные в бд и записывает их в сесии, дальше мы переходим по сайту и всё нормально, а если мы откроем брауез и запустим например news.php? Если там нету авторизации то сесия будет пустая и мы будем как гость пока не откроем index.php (в котором такая проверка есть, и этот файй заполнит сесии), а также мы можем зайти на любой другой файл и чтобы всегда мы были авторизированы.
3. gephaest - 17 Сентября, 2011 - 12:18:03 - перейти к сообщению
в index.php форма, которая отправляет данные на обработчик (form action=), где если все хорошо идет запись в сессии
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- $_SESSION['password']=$myrow['password'];
- $_SESSION['login']=$myrow['login'];
- $_SESSION['id']=$myrow['id'];
Потом на всех других страницах сверху код
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?PHP
- include ("bd.php"); // соединяемся с базой, укажите свой путь, если у вас уже есть соединение
- {
- //если существует логин и пароль в сессиях, то проверяем, действительны ли они
- $login = $_SESSION['login'];
- $password = $_SESSION['password'];
- $result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
- {
- //если логин или пароль не действителен
- }
- }
- else {
- //Проверяем, зарегистрирован ли вошедший
Как я понял механизм сессий носит с собой данные в $_SESSION постоянно, какой смысл на всех страницах проверять правильность данных $_SESSION?