В
некоторых ситуациях бывает удобно использовать переменные, содержимое которых
может динамически интерпретироваться как имя другой переменной. Рассмотрим типичный
случай присваивания: $recipe = "spaghetti"; Оказывается,
строку "spaghetti" можно интерпретировать как имя переменной - для этого
в команде присваивания перед именем исходной переменной ставится второй знак $: $$recipe
= "& meatballs"; Эта команда присваивает строку "&
meatballs" переменной с именем "spaghetti". Следовательно, следующие
две команды выводят одинаковые результаты: print $recipe $spaghetti; print
$recipe $($recipe); В обоих случаях будет выведена строка "spaghetti
& meatballs". Стандартные переменные В РНР поддерживается
ряд стандартных переменных, предоставляющих в распоряжение программиста довольно
подробную информацию о внутренней конфигурации. Значения одних переменных задаются
РНР, другие изменяются в зависимости от операционной системы и web-сервера, с
которыми работает РНР. Вместо подробного описания всех стандартных переменных
я выделю лишь те переменные и функции, которые используются на практике многими
программистами. Чтобы получить полный список переменных web-сервера, окружения
и РНР, определенных для вашей конфигурации системы, достаточно выполнить следующий
фрагмент: while (list($var,$value) = each($GLOBALS)) : echo "<BR>$var
=> $value"; endwhile; В результате выводится список наподобие
приведенного ниже. Потратьте немного времени на просмотр полученных данных, а
затем разберите приведенные примеры. GLOBALS => HTTP_GET_VARS =>
Array HTTP_COOKIE_VARS => Array HOSTSIZE => 1000 HOSTNAME
=> server1.apress.com LOGNAME => unstrung HISTFILESIZE =>
1000 REMOTEHOST => apress.com MAIL -> /var/spool/mail/apress
MACHTYPE => 1386 TERM => vt100 HOSTTYPE => i386-linux
PATH => /usr/sbin:/sbin:/usr/local /bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/Java/bin
HOME => /root INPUTRC => /etc/inputrc SHELL => /bin/csh
USER => nobody VENDOR => intel GROUP => root HOST
=> server1.apress.com OSTYPE => linux PWD => /www/bin SHLVL
=> 3_ => /www/bin/httpd DOCUMENT_ROOT => /usr/local/apress/site.apress
HTTP_ACCEPT => */* HTTP_ACCEPT_ENCODING => gzip, deflate HTTP_ACCEPT_LANGUAGE
=> it.en-us;q=0.5 HTTP_CONNECTION -> Keep-Alive HTTP_HOST
=> www.apress.com HTTP_USER_AGENT => Mozilla/4.0 (compatible; MSIE
5.0: Windows 98; CNETHomeBuild051099) REMOTE_ADOR => 127.0.0.1
REMQTE_PORT => 3207 SCRIPT_FILENAME => /usr/local/apress/site.apress/j/environment_vars.php
SERVER_ADDR => 127.0.0.1 SERVER_AOMIN => admin@apress.com
SERVER_NAME => www.apress.com SERVERJORT => 80 SERVER
SIGNATURE => Apache/1.3.12 Server at www.apress.com Port 80 SERVER_SOFTWARE
=> Apache/1.3.12 (Unix) PHP/4.0.1 GATEWAY_INTERFACE => CGI/1.1 SERVER_PROTOCOL
=> HTTP/1.1 REQUEST_METHOD => GET QUERY_STRING => REQUEST_URI
=> /j/environment_vars.php SCRIPT_NAME => /j/environment_vars.php
PATH_TRANSLAETD => /usr/local/apress/site.apress/j/environment_vars.php
PHP_SELF => /j/environment_vars.php argv => Array argc
=> 0 var => argc value => argc Как видите, стандартные
переменные содержат разнообразные сведения - как полезные, так и не очень. Вы
можете вывести любую из этих переменных по имени. Например, следующая команда
выводит IP-адрес пользователя: print "Hi! Your IP address is: $REMOTE_ADDR"; IP-адрес
выводится в числовой форме (например, 208.247.106.187). Кроме того, стандартные
переменные могут использоваться для сбора информации о браузере и операционной
системе пользователя. Команда print "Your browser is: $HTTP_USER_AGENT"; возвращает
информацию следующего вида: Your browser is: Mozina/4.0 (compatible: MSIE
5.0; Windows 98: CNETHomeBuild051099) Информация о браузере и операционной
системе, в которой он работает, может пригодиться при построении страниц, рассчитанных
на специфические форматы конкретных браузеров. Для работы с массивами стандартных
переменных необходимо включить директиву track_vars в файл php.ini. В РНР версии
4.0.3 директива track_vars включена постоянно. |