Я использую PHP5.3.8 некоторое время, и я только что натолкнулся на новую ошибку для меня;PHP, объявляющий глобальные переменные и переменные сеанса
Предупреждение: Неизвестно. Возможно, ваш сценарий зависит от побочного эффекта сеанса , который существовал до PHP 4.2.3. Обратите внимание, что расширение не рассматривает глобальные переменные в качестве источника данных, , если только register_globals не включен. Вы можете отключить эту функцию и это предупреждение, установив session.bug_compat_42 или session.bug_compat_warn соответственно. in Unknown В строке поиска 0
Для решения этой проблемы здесь; PHP session side-effect warning with global variables as a source of data.
Однако я до сих пор не понимаю Почему Это происходит. Насколько мне известно, не должно быть двусмысленности между $foo
и $_SESSION['foo']
?
Я попытался проверить несколько сценариев в Интернете, которые, как говорят люди, выкидывают эту ошибку, но они не бросают предупреждение в мою систему, и сценарий, который я получаю это предупреждение, - это усложнение и удаление его вплоть до нескольких строк, чтобы воспроизвести ошибку, оказывается проблематичным.
Однако я сузил его до одной строки;
$bonus = isset($_GET['bonus']) ? $_GET['bonus'] : '';
$_SESSION['bonus']
установлен в null
в предыдущей странице, и register_globals был выключен, так как о чем-то PHP4.2, поэтому не может быть сфера $ _GET.
Так что это возвращает меня к моему первому пункту; почему возникает неожиданно проблема между $bonus
и $_SESSION['bonus']
? Я говорю внезапно, потому что я использую этот точный скрипт на другом сайте (тот же самый), и я не получаю ошибок.
Может ли кто-нибудь указать мне куда угодно, что, возможно, объясняет более подробно, как PHP имеет дело с сессионными варами и т. Д. И почему существует проблема между двумя переменными?
Спасибо.
[Update]
Глядя здесь; PHP Runtime Configuration это не говоря уже о том, что:
[РНР ...] недокументированная особенность/ошибка, которая позволяет инициализировать переменную сеанса в глобальном масштабе ...
Я предполагаю, что может не намного больше сказать, кроме этого. Это только кажется странным, что PHP имеет проблемы с $_SESSION['foo']
/$foo
когда $_SESSION['foo'] != $foo
...
Вопрос не достаточно ясен для меня. –
@HermannStephaneNtsamo вопрос; почему объявление переменной с тем же именем, что и переменная сеанса, выдает это предупреждение? – Stu