Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.02.2007, 23:07
BarsMaster22 вне форума Посмотреть профиль Отправить личное сообщение для BarsMaster22 Найти все сообщения от BarsMaster22
  № 1  
Ответить с цитированием
BarsMaster22

Регистрация: Jan 2007
Сообщений: 2
По умолчанию Сессии и массивы

Как зарегестрировать в сессию массив?
Например, $_SESSION['login'] - без проблемм...
$_SESSION[user['login']] или $_SESSION[user[login]] ни в какую. Как быть?. Я хочу, что бы все данные юзера были в одном массиве, чтобы не путаться, тем более выглядит красивее, чем $user_login, $user_pass и т.д.
Помогите, пожалуйста...

Старый 05.02.2007, 01:54
lizergil вне форума Посмотреть профиль Отправить личное сообщение для lizergil Найти все сообщения от lizergil
  № 2  
Ответить с цитированием
lizergil
 
Аватар для lizergil

Регистрация: Jan 2002
Адрес: Королёв
Сообщений: 735
Отправить сообщение для lizergil с помощью ICQ Отправить сообщение для lizergil с помощью Yahoo
ну, исходя из того, что любое поле сессии это - максимум, блок текстовых данных, то стандартный механизм передачи данных сессии, а это куки или POST/GET, не поймет, никакого твоего типа данных, как массив в PHP.

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

если у тебя есть сущность User, которая, содержит все необходимые данные о Пользователе, эта сущность (классик у тебя наверное ест!ь ) должна иметь методы:

public String User::serialize()
public static User User::deserialize(String data)

которые должны уметь запаковывать/распаковывать все данные сущности в/из строку/строки.

PHP код:
$_SESSION['user'] = $user->serialize();
$user User::deserialize($_SESSION['user']); 


Последний раз редактировалось lizergil; 05.02.2007 в 01:58.
Старый 05.02.2007, 09:54
Tardos Mors вне форума Посмотреть профиль Отправить личное сообщение для Tardos Mors Найти все сообщения от Tardos Mors
  № 3  
Ответить с цитированием
Tardos Mors

Регистрация: Jul 2006
Адрес: Новосибирск
Сообщений: 530
Отправить сообщение для Tardos Mors с помощью ICQ
Доступ как к многомерному моссиву:
$_SESSION['user']['login']

Старый 05.02.2007, 13:12
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 4  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
lizergil, не кури больше эту траву. Никогда. А прежде чем лезть в реализацию классов на php, внимательно и вдумчиво прочитай про механизм сессий, а так же чуть менее внимательно, но все так же вдумчиво о протоколе HTTP.

BarsMaster22,
1)
$_SESSION['user'] = array();
$_SESSION['user']['login'] = 'Vasya';
$_SESSION['user']['age'] = 25;

2)
$user = array('login' => 'Vasya', 'age' => 25);
$_SESSION['user'] = $user;
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 05.02.2007, 16:46
FourSide вне форума Посмотреть профиль Отправить личное сообщение для FourSide Найти все сообщения от FourSide
  № 5  
Ответить с цитированием
FourSide

Регистрация: Jul 2006
Сообщений: 387
Отправить сообщение для FourSide с помощью Skype™
Цитата:
Сообщение от BarsMaster22
$_SESSION[user['login']] или $_SESSION[user[login]] ни в какую. Как быть?
Добавить $ перед user так, чтобы выглядело:
Код:
$_SESSION[$user['login']]
или (смотря что в массиве).
Код:
$_SESSION[$user[login]]
В сессиях массивы хранятся прекрасно.

Старый 05.02.2007, 19:20
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 6  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
FourSide, убедительно прошу не давать новичкам советов, потенциально ведущих к неверному поведению скрипта.

$_SESSION[$user['login']] развалиться, если в $user['login'] что нибудь, отличное от строки или числа.

$_SESSION[$user[login]] в случае отсутствия определения login через define('login', value) эквивалетно $_SESSION[$user['login']] с генерацией ошибки уровня E_NOTICE.
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 06.02.2007, 11:39
FourSide вне форума Посмотреть профиль Отправить личное сообщение для FourSide Найти все сообщения от FourSide
  № 7  
Ответить с цитированием
FourSide

Регистрация: Jul 2006
Сообщений: 387
Отправить сообщение для FourSide с помощью Skype™
Если у новичка не вылетели предупреждения при использовании $_SESSION[user['login']] или $_SESSION[user[login]], то очень логично, что E_NOTICE (и скорее всего E_WARNING) отключены.
В данном примере я показал, что нельзя забывать $ перед переменными.
К тому же, заполнять массив в сессию необходимо после проверки правильности введенного логина, иначе и ваш код будет бессмысленнен.

В остатке - согласен, что это не готовый код, да и не стремился к этому (тем более для новичка).

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.