PHP: $ _SESSION никогда не устанавливается, но $ _POST есть? - PullRequest
0 голосов
/ 11 апреля 2011

[@ замечание downvote и идиота, это не круто, чтобы избивать людей.Я перепроверил документацию и комментарии за 3 дня до того, как задал вопрос.Закрытие, чтобы не допустить скопления идиотов с бесполезными и фактически некорректными комментариями, как это сделал Джеймс.Спасибо Чарльзу и Бренту Б за помощь.Оказывается, это не проблема Safari, поэтому я удалил эти теги.]


$ _ SESSION не устанавливается в Safari, и, следовательно, моя многостраничная форма разрывается.$ _POST, $ _REQUEST действительно устанавливаются (но, очевидно, исчезают на последующих страницах).Версии PHP: 5.3.1, Safari 5.

Помогите!Это не проблема с любым из следующих, я проверил их все, и я прочитал все другие связанные вопросы:

  • session_start () работает.SID / PHPSESSID сохраняется на всех страницах.
  • session.use_cookies = 1, session.use_only_cookies = 1
  • Я проверил php.ini и считаю, что все в порядке
  • Я настроил Safari для принятия всех файлов cookie (на данный момент).Без разницы.
  • Я могу вручную установить $ _ SESSION ['debug'] и что действительно сохраняется на всех страницах (и файл сеанса корректно записывается).Пока я этого не сделаю, $ _ SESSION никогда не будет определен.

У меня нет времени на отладку этой чепухи, поэтому какой из следующих обходных путей в последнюю минуту наименее уродлив?(это программное задание, а не производственный код) Согласно примечаниям курса, $ _SESSION должен объединять $ _POST, $ _REQUEST, $ _GET, сессию и глобальные переменные, верно?

  1. вручную сделать $ _ SESSION = array_merge ($ _ SESSION, $ _ POST); [это работает]
  2. использовать скрытую форму для повторной публикации $_POST в последующих формах
  3. прочее?

(В более широком смысле, должен ли PHP просто считаться сломанным в Safari (5)?)

1 Ответ

5 голосов
/ 11 апреля 2011

$ _ SESSION НЕ объединяет другие суперглобальные массивы, это собственный массив.$ _REQUEST - это слияние $ _POST и $ _GET, но это все.Из того, что вы описываете, $ _SESSION работает правильно.Прочтите официальное руководство.http://www.php.net/manual/en/language.variables.superglobals.php

...