|
|
|
| Возник вопрос по работе сессий.
есть "сайт" на локальном компе, админка и пользовательская часть.
Доступ к админке закрыт через определение констаны, как было написано в одной из статей в разделе "статьи о php".
вопрос в том, что если я "авторизируюсь" в админской части, а потом перехожу в пользовательскую и авторизируюсь там, то первая сессия перезаписывается.
насколько я знаю, должна быть создана вторая сесиия, а у меня перезаписывается.
в чём может быть трабла, подскажите, пожалуйста? | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.04.2009 в 23:27)
| | две сессии использовать тебе никакая система не позволит, всё и всегда хранится в одной, а то что происходит перезапись скорее всего из-за того, что у тебя в сессии хранятся переменные сл. вида
$_SESSION['login']
$_SESSION['password']
|
когда ты перелогиневаешься, то в имеющиеся переменные подставляются новые данные, вот и товет на твой вопрос.
предупреждая твой сл. вопрос скажу сл.
создай разные переменные типа
$_SESSION['loginAdmin']
$_SESSION['passwordAdmin']
$_SESSION['loginUser']
$_SESSION['passwordUser']
|
тогда всё будет в ажуре.
P.S. не нужно благодарностей =) | |
|
|
|
|
|
|
|
для: Dobrynin
(16.04.2009 в 06:19)
| | В сессии не нужны переменные вида
$_SESSION['passwordAdmin']
$_SESSION['passwordUser'] | |
|
|
|
|
|
|
|
для: Trianon
(16.04.2009 в 08:13)
| | не нужны, а вот что занести в сессию?
осуждалась здесь подобная тема, но как я понял ни к чему не пришли | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.04.2009 в 10:09)
| | Странный вопрос.
Заносить нужно то, что может потребоваться.
Что не требуется - можно не заносить.
Пароли же заносить не только не требуется, но и недопустимо.
Лишний факт копирования (присваивания, сохранения, записи) пароля - лишний риск его где-то засветить. | |
|
|
|
|
|
|
|
для: Trianon
(16.04.2009 в 10:13)
| | спасибо за ответы | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.04.2009 в 10:09)
| | а вот что занести в сессию?
флаг авторизации - это может быть всё что угодно, но не логин с паролем. (можно использовать юниксовые права доступа например) | |
|
|
|
|
|
|
|
для: Valick
(16.04.2009 в 12:43)
| | если можно примерчик приведи.
пароль это понятно, а вот с логином как быть,если надо вывести его как приветствие на странице? | |
|
|
|
|
|
|
|
для: Dobrynin
(16.04.2009 в 06:19)
| | >две сессии использовать тебе никакая система не позволит, всё и всегда хранится в одной, а то что происходит перезапись скорее всего из-за того, что у тебя в сессии хранятся переменные сл. вида
>
>$_SESSION['login']
>$_SESSION['password']
>
|
>когда ты перелогиневаешься, то в имеющиеся переменные подставляются новые данные, вот и товет на твой вопрос.
>
>предупреждая твой сл. вопрос скажу сл.
>создай разные переменные типа
>
>$_SESSION['loginAdmin']
>$_SESSION['passwordAdmin']
>
>$_SESSION['loginUser']
>$_SESSION['passwordUser']
>
|
>
>тогда всё будет в ажуре.
немного поковырялся, совсем запутался...
создать разные переменные не получается, так как надо, что бы при переходе из "админки" передавались те же данные, что устанавливаются при регистрации пользователя.
в сессию пишу такие данные :
имя;
имя аватары;
статус(админ или юзер);
id пользователя для страницы редактирования;
ну с переходом из админки проблем нет, всё передаётся как надо.
но если авторизируюсь в пользовательской части, то при переходе в админку пароль не запрашивает, а пускает сразу.
единственное, что можно сделать, так это проверить статус пользователя и если не "админ", то прервать выполнение скрипта с выводом соответствующего сообщения, но это, как я понимаю не очень хорошо.
можно конечно через базовую HTTP-аутентификацию закрыть в админку доступ, но хотелось бы сделать так, что бы можно было оформить страницу доступа, а не смотреть на скучное окно для ввода данных.
посоветуйте, пожалуйста, что можно сделать?
p.s. что то типа как на joomla вход в админку. | |
|
|
|
|
|
|
|
для: Slo_Nik
(21.04.2009 в 15:26)
| | Slo_Nik, а сессии для какой цели вы используете? Для того чтобы передать данные или для того, чтобы закрыть страницу админки? Если первое, то либо через форму, либо с файла или мускула лучше доставать, а если второе, то в сессии должен быть просто рандом ключ и такойже в GET массиве, а на страничке админки в самом начале должно выполнятся их сравнение. | |
|
|
|
|
|
|
|
для: Miha_Kregov
(21.04.2009 в 15:38)
| | выше я писал, что для закрытия админки, делаю через определение константы, как было описано в одной из статей на сайте.
мне не нравится то, что когда захожу в пользовательскую часть, а потом делаю в браузере ещё одну закладку и захожу в админку, то не требует авторизации, пускает сразу.
едиственное, что я пока придумал, так это проверка статуса пользователя и если не "админ", то выполнение скрипта прерывается.
статус пользователя заношу в сессию.
если взять ту же joomla, то при авторизации на сайте ты ни как не сможешь войти в админку, всёравно попросит пароль с логином. | |
|
|
|
|
|
|
|
для: Slo_Nik
(21.04.2009 в 15:49)
| | а вы код выложите ) | |
|
|
|
|
|
|
|
для: Miha_Kregov
(21.04.2009 в 16:09)
| | с кодом разобрался, поменял всётаки значения сессий для админа и пользователя.
теперь не пускает пользователя в админку.
но вопрос остался такой, если пользователь уходит с сайта, все значения в сессии уничтожаются, включая админские.
получается это из-за того, что создаётся один файл сессии на двоих, на локальном компе.
в реальной ситуации будет ли так же работать или будет всётаки создан второй файл сессии?
выход делаю так
<?php
session_destroy();
header("location:index.php");
exit();
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(21.04.2009 в 18:07)
| | подскажите кто может.
Загрузил свою "админку" на реальный сайт, вошёл в админку, потом вошёл в пользовательскую часть, вроде всё работает7
при выходе из пользовательской части сбросилась сессия и в админской.
в чём может быть проблемма? | |
|
|
|
|
|
|
|
для: Slo_Nik
(15.04.2009 в 23:27)
| | переписал немного файл выхода с сайта, вместо "session_destroy()" применил "unset()" с перечислением данных сессии, которые надо удалить, вроде работает, но правильно ли это?
может есть другой способ, более правильный? | |
|
|
|