Skunk Forum - Техника, Наука, Общество »
Общекомпьютерный » php. Можно ли засунуть в переменную $_SESSION ['abcd'] ... |
Новая тема | Написать ответ |
Автор | Тема: php. Можно ли засунуть в переменную $_SESSION ['abcd'] ... |
VoLK Сообщений: 13838 |
Массив? И как это сделать? В версии 4.4 php всё работает при тупом: 1 $a = целое число; 2 $_SESSION ['abcd']= array(); 3 $_SESSION ['abcd'][$a] = целое число; И всё это считывается на других страницах. в 5.04 php пошёл другим путём, написал $_SESSION ['abcd'] = array($a => целое число); самый радикальный путь - сделать свои передачи сессий через базу. Добавление от 24 Ноября 2005 15:27: Почти та же проблема. Но что ему помогло осталось за кадром (во всяком случае для меня). |
Elder Twisted Firestarter Сообщений: 1194 |
Почти та же проблема. Но что ему помогло осталось за кадром (во всяком случае для меня). Не знаю, что за проблема у тебя, но тот парень пытался запихнуть массив в скаляр. Простая проверка перед созданием массива if isset() && !is_array() then unset() решила его проблему. |
VoLK Сообщений: 13846 |
Elder У меня проблема не проверить, а запихнуть. Впрочем она, похоже, становится теоретической, если мой скрипт передачи массивов как строк заработает на хостере (на 4.4 он работает, но я уже ни во что не верю. ![]() |
Белый Ворон MchlP Сообщений: 2703 |
VoLK в твоем случае, PHP5 может ругаться, потому что переменная $_SESSION_['abcd'] уже существует, причем как скаляр и обявить ее массивом - что мертвому припарка. Упомянутый Elder'ом способ - решение этой проблемы. PHP4 не делат такой проверки - поэтому там все работает. PHP5 - строже относится к таким выкрутасам, поэтому, либо ищи у себя определение $_SESSION_['abcd'], либо тупо сделай проверку (и разрушение) перед присвоением, что-то типо того: if isset() && !is_array() then unset() |
VoLK Сообщений: 13849 |
Белый Ворон Проверку сделать несложно. Просто что мне даст эта проверка? Только знание того, что $_SESSION_['abcd'] уже не array (а ведь я её уже делал массивом). Т.е. я каждый раз попадаю на этот if - if(!isset($_SESSION['abcd']) || !is_array($_SESSION['abcd'])) Если я каждый раз буду писать скаляру array, всё равно предыдущие данные не восстановить. |
Белый Ворон MchlP Сообщений: 2704 |
VoLK Просто что мне даст эта проверка? Только знание того, что $_SESSION_['abcd'] уже не array (а ведь я её уже делал массивом). Нельзя сделать скаляр массивом, понимаешь? Утверждение: $_SESSION_['abcd'] уже не array - не имеет смысла, потому что $_SESSION_['abcd'] еще скаляр :-)) Чтобы сделать $_SESSION_['abcd'] массивом, нужно сначало разрушить скаляр $_SESSION_['abcd']. :-)) Если я каждый раз буду писать скаляру array, Вот и определись, скаляр у тебя $_SESSION_['abcd'] или массив. Либо так, либо так - третьего, как говорил наш дрюк, - не дано. :-)) |
VoLK Сообщений: 13853 |
Белый Ворон Похоже нашёл. На одной странице похоже теряется сессия. Причём только на одной. Почему понять пока не могу. Сессия приходит, но на самой странице начинает творить чудеса. Учитывая, что я гоняю уже строку, а не массив, то следующий шаг - записывать её в базу и послать весь этот механизм сессиий нах. ![]() У меня паралельно такой вопрос, я делаю в базе поле TIMESTAMP и каждый пришедний сравнивает его с временем и если устарело стирает. Так? Добавление от 25 Ноября 2005 16:02: Обнаружил ошибку! Конфликт имени переменной сессии и переменной возвращения запроса mysql_query. |
skunk Злобный админ Сообщений: 5503 |
VoLK а вот то, что explore кромсает строку - бесспорно баг Еще один баг нашел? Тебе в Микрософт резюме надо послать. Сразу на 5 куе возьмут, со знанием одного албанского даже. |
VoLK Сообщений: 13857 |
skunk Ошибся. Explode() имел ввиду. ![]() |
Ваш ответ: |
Все время MSK |
Склеить | Разбить | Закрыть | Переместить | Удалить |
Новая тема | Написать ответ |
Copyright © skunksworks.net, 2000-2020
Разработка и техническая поддержка: skunksworks.net