Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перезапись значений сессии.
 
 автор: Slo_Nik   (15.04.2009 в 23:27)   письмо автору
 
 

Возник вопрос по работе сессий.
есть "сайт" на локальном компе, админка и пользовательская часть.
Доступ к админке закрыт через определение констаны, как было написано в одной из статей в разделе "статьи о php".
вопрос в том, что если я "авторизируюсь" в админской части, а потом перехожу в пользовательскую и авторизируюсь там, то первая сессия перезаписывается.
насколько я знаю, должна быть создана вторая сесиия, а у меня перезаписывается.
в чём может быть трабла, подскажите, пожалуйста?

  Ответить  
 
 автор: Dobrynin   (16.04.2009 в 06:19)   письмо автору
 
   для: Slo_Nik   (15.04.2009 в 23:27)
 

две сессии использовать тебе никакая система не позволит, всё и всегда хранится в одной, а то что происходит перезапись скорее всего из-за того, что у тебя в сессии хранятся переменные сл. вида

$_SESSION['login']
$_SESSION['password']

когда ты перелогиневаешься, то в имеющиеся переменные подставляются новые данные, вот и товет на твой вопрос.

предупреждая твой сл. вопрос скажу сл.
создай разные переменные типа

$_SESSION['loginAdmin']
$_SESSION['passwordAdmin']

$_SESSION['loginUser']
$_SESSION['passwordUser']


тогда всё будет в ажуре.

P.S. не нужно благодарностей =)

  Ответить  
 
 автор: Trianon   (16.04.2009 в 08:13)   письмо автору
 
   для: Dobrynin   (16.04.2009 в 06:19)
 

В сессии не нужны переменные вида
$_SESSION['passwordAdmin']
$_SESSION['passwordUser']

  Ответить  
 
 автор: Slo_Nik   (16.04.2009 в 10:09)   письмо автору
 
   для: Trianon   (16.04.2009 в 08:13)
 

не нужны, а вот что занести в сессию?
осуждалась здесь подобная тема, но как я понял ни к чему не пришли

  Ответить  
 
 автор: Trianon   (16.04.2009 в 10:13)   письмо автору
 
   для: Slo_Nik   (16.04.2009 в 10:09)
 

Странный вопрос.
Заносить нужно то, что может потребоваться.
Что не требуется - можно не заносить.

Пароли же заносить не только не требуется, но и недопустимо.
Лишний факт копирования (присваивания, сохранения, записи) пароля - лишний риск его где-то засветить.

  Ответить  
 
 автор: Slo_Nik   (16.04.2009 в 12:14)   письмо автору
 
   для: Trianon   (16.04.2009 в 10:13)
 

спасибо за ответы

  Ответить  
 
 автор: Valick   (16.04.2009 в 12:43)   письмо автору
 
   для: Slo_Nik   (16.04.2009 в 10:09)
 

а вот что занести в сессию?
флаг авторизации - это может быть всё что угодно, но не логин с паролем. (можно использовать юниксовые права доступа например)

  Ответить  
 
 автор: Slo_Nik   (16.04.2009 в 17:43)   письмо автору
 
   для: Valick   (16.04.2009 в 12:43)
 

если можно примерчик приведи.
пароль это понятно, а вот с логином как быть,если надо вывести его как приветствие на странице?

  Ответить  
 
 автор: Slo_Nik   (21.04.2009 в 15:26)   письмо автору
 
   для: Dobrynin   (16.04.2009 в 06:19)
 

>две сессии использовать тебе никакая система не позволит, всё и всегда хранится в одной, а то что происходит перезапись скорее всего из-за того, что у тебя в сессии хранятся переменные сл. вида
>

>$_SESSION['login']
>$_SESSION['password']
>

>когда ты перелогиневаешься, то в имеющиеся переменные подставляются новые данные, вот и товет на твой вопрос.
>
>предупреждая твой сл. вопрос скажу сл.
>создай разные переменные типа
>

>$_SESSION['loginAdmin']
>$_SESSION['passwordAdmin']
>
>$_SESSION['loginUser']
>$_SESSION['passwordUser']
>

>
>тогда всё будет в ажуре.
немного поковырялся, совсем запутался...
создать разные переменные не получается, так как надо, что бы при переходе из "админки" передавались те же данные, что устанавливаются при регистрации пользователя.
в сессию пишу такие данные :
имя;
имя аватары;
статус(админ или юзер);
id пользователя для страницы редактирования;
ну с переходом из админки проблем нет, всё передаётся как надо.
но если авторизируюсь в пользовательской части, то при переходе в админку пароль не запрашивает, а пускает сразу.
единственное, что можно сделать, так это проверить статус пользователя и если не "админ", то прервать выполнение скрипта с выводом соответствующего сообщения, но это, как я понимаю не очень хорошо.
можно конечно через базовую HTTP-аутентификацию закрыть в админку доступ, но хотелось бы сделать так, что бы можно было оформить страницу доступа, а не смотреть на скучное окно для ввода данных.
посоветуйте, пожалуйста, что можно сделать?
p.s. что то типа как на joomla вход в админку.

  Ответить  
 
 автор: Miha_Kregov   (21.04.2009 в 15:38)   письмо автору
 
   для: Slo_Nik   (21.04.2009 в 15:26)
 

Slo_Nik, а сессии для какой цели вы используете? Для того чтобы передать данные или для того, чтобы закрыть страницу админки? Если первое, то либо через форму, либо с файла или мускула лучше доставать, а если второе, то в сессии должен быть просто рандом ключ и такойже в GET массиве, а на страничке админки в самом начале должно выполнятся их сравнение.

  Ответить  
 
 автор: Slo_Nik   (21.04.2009 в 15:49)   письмо автору
 
   для: Miha_Kregov   (21.04.2009 в 15:38)
 

выше я писал, что для закрытия админки, делаю через определение константы, как было описано в одной из статей на сайте.
мне не нравится то, что когда захожу в пользовательскую часть, а потом делаю в браузере ещё одну закладку и захожу в админку, то не требует авторизации, пускает сразу.
едиственное, что я пока придумал, так это проверка статуса пользователя и если не "админ", то выполнение скрипта прерывается.
статус пользователя заношу в сессию.
если взять ту же joomla, то при авторизации на сайте ты ни как не сможешь войти в админку, всёравно попросит пароль с логином.

  Ответить  
 
 автор: Miha_Kregov   (21.04.2009 в 16:09)   письмо автору
 
   для: Slo_Nik   (21.04.2009 в 15:49)
 

а вы код выложите )

  Ответить  
 
 автор: Slo_Nik   (21.04.2009 в 18:07)   письмо автору
 
   для: Miha_Kregov   (21.04.2009 в 16:09)
 

с кодом разобрался, поменял всётаки значения сессий для админа и пользователя.
теперь не пускает пользователя в админку.
но вопрос остался такой, если пользователь уходит с сайта, все значения в сессии уничтожаются, включая админские.
получается это из-за того, что создаётся один файл сессии на двоих, на локальном компе.
в реальной ситуации будет ли так же работать или будет всётаки создан второй файл сессии?
выход делаю так
<?php
session_destroy
();
header("location:index.php");
exit(); 
?>

  Ответить  
 
 автор: Slo_Nik   (22.04.2009 в 14:41)   письмо автору
 
   для: Slo_Nik   (21.04.2009 в 18:07)
 

подскажите кто может.
Загрузил свою "админку" на реальный сайт, вошёл в админку, потом вошёл в пользовательскую часть, вроде всё работает7
при выходе из пользовательской части сбросилась сессия и в админской.
в чём может быть проблемма?

  Ответить  
 
 автор: Slo_Nik   (22.04.2009 в 15:25)   письмо автору
 
   для: Slo_Nik   (15.04.2009 в 23:27)
 

переписал немного файл выхода с сайта, вместо "session_destroy()" применил "unset()" с перечислением данных сессии, которые надо удалить, вроде работает, но правильно ли это?
может есть другой способ, более правильный?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования