![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2007
Сообщений: 2
|
Как зарегестрировать в сессию массив?
Например, $_SESSION['login'] - без проблемм... $_SESSION[user['login']] или $_SESSION[user[login]] ни в какую. Как быть?. Я хочу, что бы все данные юзера были в одном массиве, чтобы не путаться, тем более выглядит красивее, чем $user_login, $user_pass и т.д. Помогите, пожалуйста... |
|
|||||
|
ну, исходя из того, что любое поле сессии это - максимум, блок текстовых данных, то стандартный механизм передачи данных сессии, а это куки или POST/GET, не поймет, никакого твоего типа данных, как массив в PHP.
есть простой прием - сериализация данных, для передачи сложных, и непонятных для выше описанного уровня обмена данными структур. если у тебя есть сущность User, которая, содержит все необходимые данные о Пользователе, эта сущность (классик у тебя наверное ест!ь ) должна иметь методы:public String User::serialize() public static User User::deserialize(String data) которые должны уметь запаковывать/распаковывать все данные сущности в/из строку/строки. ![]() Последний раз редактировалось lizergil; 05.02.2007 в 01:58. |
|
|||||
|
Доступ как к многомерному моссиву:
$_SESSION['user']['login'] |
|
|||||
|
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;
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Цитата:
или (смотря что в массиве). В сессиях массивы хранятся прекрасно. |
|
|||||
|
FourSide, убедительно прошу не давать новичкам советов, потенциально ведущих к неверному поведению скрипта.
$_SESSION[$user['login']] развалиться, если в $user['login'] что нибудь, отличное от строки или числа. $_SESSION[$user[login]] в случае отсутствия определения login через define('login', value) эквивалетно $_SESSION[$user['login']] с генерацией ошибки уровня E_NOTICE.
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Если у новичка не вылетели предупреждения при использовании $_SESSION[user['login']] или $_SESSION[user[login]], то очень логично, что E_NOTICE (и скорее всего E_WARNING) отключены.
В данном примере я показал, что нельзя забывать $ перед переменными. К тому же, заполнять массив в сессию необходимо после проверки правильности введенного логина, иначе и ваш код будет бессмысленнен. В остатке - согласен, что это не готовый код, да и не стремился к этому (тем более для новичка). |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|