PHPFAQ  
Начинающим   Технологии   MySQL   Ошибки   Ссылки   Юмор   О сайте   Форум   PHP Club  

Не передаются переменные! Проблема Undefined variable


Во всех старых руководствах по РНР написано, что даные, полученные из формы, или переданные по ссылке, вот так: script.php?peremennaya=znachenie&variable=value
автоматически становятся переменными PHP, $peremennaya и $variable
Эта информация устарела.
Дело в том, что в целях безопасности, начиная с версии 4.1, РНР настраивается по умолчанию так, чтобы переданные значения не назначались переменным.
Получить же переданное значение можно обратившись к соответствующему массиву.
Например:
Если передаем методом GET, обратившись к скрипту по ссылке вида
script.php?var=value
или отправив форму, указав в ней method="GET",
то все переменные содержатся в массиве $_GET.
echo $_GET['var']; напечатает "value".
Если получаем данные из формы, отправленной методом POST, то все поля этой формы содержатся в массиве $_POST. Допустим, в форме был элемент
<input type="hidden" name="var" value="1">,
то в скрипте, который указан в action формы, можно написать echo $_POST['var']; и будет выведена 1.

Поэтому, если вы уверены, что переменная есть, но вы не можете ее найти - ищите ее в суперглобальных массивах.
Подробнее о них можно почитать на русском языке в официальной документации
http://ru2.php.net/variables.predefined

То же касается и серверных переменных, таких, как $REMOTE_ADDR$PHP_SELF. Получить их можно, обратившись к массивам $_SERVER$_ENV или функцией getenv 
getenv('HTTP_REFERER')
;

Переменные, зарегистрированные в сессии, следует искать в массиве $_SESSION.
Данные cookie содержатся в массиве $_COOKIE, сведения о закачанных файлах - в $_FILES
Переменные окружения - в $_ENV, а так же, существует массив $_REQUEST, в котором собраны данные из GET, POST и cookie.

Важно! Весьма в поисках переменных помогает одна их главных функций PHP - phpinfo()
ее следует применять всякий раз, когда вы "потеряли" переменную, вызовите phpinfo(32); в скрипте, в котором не работает авторизация, в скрипте, который принимает файл при аплоаде - и все найдется!


Все то же самое можно прочесть и в документации: http://www.php.net/manual/ru/security.globals.php

Другие материалы раздела:
Хочу изучать PHP и Mysql. С чего начать?
Самые основы. Как работает PHP.
Документация по PHP. Мануал по PHP, книги.
Решение проблемы "Cannot add header information - headers already sent"
Различие между абсолютными и относительными путями. В файловой системе и на сайте.
Пример системы управления сайтом
Что такое PHP?
Как писать музыку на PHP


Комментарии

Я 31.10.11 02:53
Статья подтолкнула к мысли почему не работает мой скрипт поэтому спасибо
DS 02.09.11 22:28
ппц подумал я посмотрев на дату коментов))

тЫрнет - сила!! )))
Даже с годами, однажды сказанная умная мысль, помогает роду людскому))
Laslo 16.12.10 19:59
просто супер $_GET['y']отличное решение
Alex 27.11.10 17:31
TopServer 2.1. Если форма и скрипт php в одном файле *.php, скрипт работает. Если два файла, *.html и *.php, то при нажатии на кнопку появляется пустая страница, "Просмотр HTML-кода" - там весь текст скрипта php, начиная с <?php. В чем может быть проблема, помогите!!!
Alex 27.11.10 17:27
Извините, если не по теме. Сам не могу найти ответ.
TopServer 2.1. Если форма и скрипт в одном файле @*.php@, скрипт работает. Если два файла, *.html и *.php, то при нажатии на кнопку появляется пустая страница, "Просмотр HTML-кода" - там текст скрипта php. В чем может быть проблема, помогите!!!
kriger 20.11.10 11:26
Спасибо за статью. Изучаю по учебнику, там все работает, а у меня нет. Нашел ошибку, даже умнее себя почувствовал ))
Юра 01.11.10 23:39
наконец-то нешёл человеческое описание как параметр через урл передавать. ну почему все не могут так ясно и понятно излогать мысль ??

спасибо!
Сергей 14.10.10 09:17
А как посмотреть переменные в $_FILES? Есть форма с input типа file, тип данных формы multipart/form-data, т.е. по идее файл должен передаваться, но при обращении к $_FILES ничего не происходит. Можно ли как-то посмотреть есть ли вообще что-то в $_FILES?
Ответ: print_r(), var_dump()
Bizzart 19.07.10 12:45
Ух. Нашел!
Anr 14.06.10 23:06
Спасибо:)

Написать комментарий
Пожалуйста, воздержитесь от посылки спама.
Сообщения, содержащие гиперссылки, проходят премодерацию.
Представьтесь:
Вы робот?
Сообщение:

© phpfaq.ru, 2012
Rambler's Top100 0.021 sec.