• доступно о веб-разработке
17.11.2012 PHP, Сервер, Технологии , , , , , ,

Глобальные переменные

Как в обычной жизни мы начинаем все не с чистого листа(есть заданная система координат — время, погода и т.д.), так и в программировании, даже создавая чистый файл, мы уже имеем целый ряд переменных окружения, которые доступны изначально. Они называются глобальными переменными, так как могут быть доступны в любое время из любого места.

Итак, какие же вообще бывают глобальные переменные и как их узнать?

Только наивный может полагать, что программисты все названия хранят в памяти.

Как говорил Эйнштейн, главное знать, где искать.

Вот прямо сейчас я не помню все-все глобальные переменные. Что мне делать? Как быть?

Придется закончить на этом статью…

Нет! Так не получится. Вспоминаю, что есть супер-глобальная переменная, которая хранит в себе все остальные. Как это? Сейчас увидите.

Вы помните, что при помощи специальных функций(var_dump, print_r, var_export) можно «дампить» переменные. То есть смотреть их содержимое.

Давайте проведем эксперимент.

На локальной машине при помощи пакета разработчика я создал локальный сайт test.local, а в его корне — новый файл index.php. Только в целях эксперимента.

Помню, что все глобальные переменные обозначаются БОЛЬШИМИ БУКВАМИ. А как же супер-глобальная может называться? $GLOBALS! Эврика!

Пробуем:

<?php

echo '<pre>';

print_r($GLOBALS);

Если вы с прошлых заданий еще не сообразили, то тег <pre> ставится для преформатирования. То есть обычно вам нужно ставить для перевода строки <br/>. Но здесь же все выводится автоматически? И как быть?

Для вывода кода и был придуман этот тег.

Что мы получаем на выдаче?

Держитесь!

Array
(
    [GLOBALS] => Array
 *RECURSION*
    [_ENV] => Array
        (
            [ALLUSERSPROFILE] => C:\ProgramData
            [APPDATA] => C:\Users\CuamckuyKot\AppData\Roaming
            [CommonProgramFiles] => C:\Program Files (x86)\Common Files
            [CommonProgramFiles(x86)] => C:\Program Files (x86)\Common Files
            [CommonProgramW6432] => C:\Program Files\Common Files
            [COMPUTERNAME] => DELL
            [ComSpec] => C:\windows\system32\cmd.exe
            [FP_NO_HOST_CHECK] => NO
            [HOME] => C:\Users\Dima
            [HOMEDRIVE] => C:
            [HOMEPATH] => \Users\CuamckuyKot
            [LOCALAPPDATA] => C:\Users\CuamckuyKot\AppData\Local
            [LOGONSERVER] => \DELL
            [NUMBER_OF_PROCESSORS] => 8
            [OS] => Windows_NT
            [Path] => C:\OpenServer\modules\php\PHP-5.3.18\ext;C:\OpenServer\modules\imagemagick;C:\OpenServer\modules\php\PHP-5.3.18;C:\windows\system32;C:\windows;C:\windows\system32\Wbem;C:\windows\SysWOW64
            [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
            [PHPRC] => C:\OpenServer\userdata\temp\config
            [PROCESSOR_ARCHITECTURE] => x86
            [PROCESSOR_ARCHITEW6432] => AMD64
            [PROCESSOR_IDENTIFIER] => Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
            [PROCESSOR_LEVEL] => 6
            [PROCESSOR_REVISION] => 2a07
            [ProgramData] => C:\ProgramData
            [ProgramFiles] => C:\Program Files (x86)
            [ProgramFiles(x86)] => C:\Program Files (x86)
            [ProgramW6432] => C:\Program Files
            [PSModulePath] => C:\windows\system32\WindowsPowerShell\v1.0\Modules\
            [PUBLIC] => C:\Users\Public
            [SESSIONNAME] => Console
            [SystemDrive] => C:
            [SystemRoot] => C:\windows
            [TEMP] => C:\OpenServer\userdata\temp
            [TMP] => C:\OpenServer\userdata\temp
            [USERDOMAIN] => DELL
            [USERNAME] => CuamckuyKot
            [USERPROFILE] => C:\Users\CuamckuyKot
            [windir] => C:\windows
            [windows_tracing_flags] => 3
            [windows_tracing_logfile] => C:\BVTBin\Tests\installpackage\csilogfile.log
            [AP_PARENT_PID] => 8736
        )

    [HTTP_ENV_VARS] => Array
        (
            [ALLUSERSPROFILE] => C:\ProgramData
            [APPDATA] => C:\Users\CuamckuyKot\AppData\Roaming
            [CommonProgramFiles] => C:\Program Files (x86)\Common Files
            [CommonProgramFiles(x86)] => C:\Program Files (x86)\Common Files
            [CommonProgramW6432] => C:\Program Files\Common Files
            [COMPUTERNAME] => DELL
            [ComSpec] => C:\windows\system32\cmd.exe
            [FP_NO_HOST_CHECK] => NO
            [HOME] => C:\Users\Dima
            [HOMEDRIVE] => C:
            [HOMEPATH] => \Users\CuamckuyKot
            [LOCALAPPDATA] => C:\Users\CuamckuyKot\AppData\Local
            [LOGONSERVER] => \DELL
            [NUMBER_OF_PROCESSORS] => 8
            [OS] => Windows_NT
            [Path] => C:\OpenServer\modules\php\PHP-5.3.18\ext;C:\OpenServer\modules\imagemagick;C:\OpenServer\modules\php\PHP-5.3.18;C:\windows\system32;C:\windows;C:\windows\system32\Wbem;C:\windows\SysWOW64
            [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
            [PHPRC] => C:\OpenServer\userdata\temp\config
            [PROCESSOR_ARCHITECTURE] => x86
            [PROCESSOR_ARCHITEW6432] => AMD64
            [PROCESSOR_IDENTIFIER] => Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
            [PROCESSOR_LEVEL] => 6
            [PROCESSOR_REVISION] => 2a07
            [ProgramData] => C:\ProgramData
            [ProgramFiles] => C:\Program Files (x86)
            [ProgramFiles(x86)] => C:\Program Files (x86)
            [ProgramW6432] => C:\Program Files
            [PSModulePath] => C:\windows\system32\WindowsPowerShell\v1.0\Modules\
            [PUBLIC] => C:\Users\Public
            [SESSIONNAME] => Console
            [SystemDrive] => C:
            [SystemRoot] => C:\windows
            [TEMP] => C:\OpenServer\userdata\temp
            [TMP] => C:\OpenServer\userdata\temp
            [USERDOMAIN] => DELL
            [USERNAME] => CuamckuyKot
            [USERPROFILE] => C:\Users\CuamckuyKot
            [windir] => C:\windows
            [windows_tracing_flags] => 3
            [windows_tracing_logfile] => C:\BVTBin\Tests\installpackage\csilogfile.log
            [AP_PARENT_PID] => 8736
        )

    [_POST] => Array
        (
        )

    [HTTP_POST_VARS] => Array
        (
        )

    [_GET] => Array
        (
        )

    [HTTP_GET_VARS] => Array
        (
        )

    [_COOKIE] => Array
        (
        )

    [HTTP_COOKIE_VARS] => Array
        (
        )

    [_SERVER] => Array
        (
            [HTTP_HOST] => test.local
            [HTTP_CONNECTION] => keep-alive
            [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
            [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
            [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
            [HTTP_ACCEPT_CHARSET] => windows-1251,utf-8;q=0.7,*;q=0.3
            [PATH] => C:\OpenServer\modules\php\PHP-5.3.18\ext;C:\OpenServer\modules\imagemagick;C:\OpenServer\modules\php\PHP-5.3.18;C:\windows\system32;C:\windows;C:\windows\system32\Wbem;C:\windows\SysWOW64
            [SystemRoot] => C:\windows
            [COMSPEC] => C:\windows\system32\cmd.exe
            [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
            [WINDIR] => C:\windows
            [SERVER_SIGNATURE] => 
            [SERVER_SOFTWARE] => Apache
            [SERVER_NAME] => test.local
            [SERVER_ADDR] => 127.0.0.1
            [SERVER_PORT] => 80
            [REMOTE_ADDR] => 127.0.0.1
            [DOCUMENT_ROOT] => C:/OpenServer/domains/test.local
            [SERVER_ADMIN] => [no address given]
            [SCRIPT_FILENAME] => C:/OpenServer/domains/test.local/index.php
            [REMOTE_PORT] => 52823
            [GATEWAY_INTERFACE] => CGI/1.1
            [SERVER_PROTOCOL] => HTTP/1.1
            [REQUEST_METHOD] => GET
            [QUERY_STRING] => 
            [REQUEST_URI] => /
            [SCRIPT_NAME] => /index.php
            [PHP_SELF] => /index.php
            [REQUEST_TIME] => 1353143951
            [argv] => Array
                (
                )

            [argc] => 0
        )

    [HTTP_SERVER_VARS] => Array
        (
            [HTTP_HOST] => test.local
            [HTTP_CONNECTION] => keep-alive
            [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
            [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
            [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
            [HTTP_ACCEPT_CHARSET] => windows-1251,utf-8;q=0.7,*;q=0.3
            [PATH] => C:\OpenServer\modules\php\PHP-5.3.18\ext;C:\OpenServer\modules\imagemagick;C:\OpenServer\modules\php\PHP-5.3.18;C:\windows\system32;C:\windows;C:\windows\system32\Wbem;C:\windows\SysWOW64
            [SystemRoot] => C:\windows
            [COMSPEC] => C:\windows\system32\cmd.exe
            [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
            [WINDIR] => C:\windows
            [SERVER_SIGNATURE] => 
            [SERVER_SOFTWARE] => Apache
            [SERVER_NAME] => test.local
            [SERVER_ADDR] => 127.0.0.1
            [SERVER_PORT] => 80
            [REMOTE_ADDR] => 127.0.0.1
            [DOCUMENT_ROOT] => C:/OpenServer/domains/test.local
            [SERVER_ADMIN] => [no address given]
            [SCRIPT_FILENAME] => C:/OpenServer/domains/test.local/index.php
            [REMOTE_PORT] => 52823
            [GATEWAY_INTERFACE] => CGI/1.1
            [SERVER_PROTOCOL] => HTTP/1.1
            [REQUEST_METHOD] => GET
            [QUERY_STRING] => 
            [REQUEST_URI] => /
            [SCRIPT_NAME] => /index.php
            [PHP_SELF] => /index.php
            [REQUEST_TIME] => 1353143951
            [argv] => Array
                (
                )

            [argc] => 0
        )

    [_FILES] => Array
        (
        )

    [HTTP_POST_FILES] => Array
        (
        )

    [_REQUEST] => Array
        (
        )

)

Вот это да! Как много всего. Ключами здесь выступают глобальные переменные. Их можно вызывать просто как $_GET, $_POST, $HTTP_POST_FILES.

Некоторые из этих переменных дублируются. Например, $_GET — это тоже самое, что и $HTTP_GET_VARS.

Коротко, о чем они:

  • $_ENV или $HTTP_ENV_VARS — переменные окружения. Информация о сервере (в данном случае — о вашем компьютере).
  • $_POST или $HTTP_POST_VARS — данные, отправленные методом POST (чаще всего — через форму). Здесь их нет.
  • $_GET или $HTTP_GET_VARS — данные, отправленные методом GET (через строку адреса, также можно через форму отправлять). Здесь их тоже нет, но в прошлом уроке вы уже могли потренироваться в работе с ними.
  • $_COOKIE или $HTTP_COOKIE_VARS — кукисы («печенюшки»). Механизм хранения пользовательской информации. Обсудим отдельным уроком.
  • $_SERVER или $HTTP_SERVER_VARS — среда веб-сервера.
  • $_FILES или $HTTP_POST_FILES — загружаемые на сервер файлы. Об этом будет много уроков, тема сложная.
  • $_REQUEST — содержит в себе все пришедшие переменные из $_GET, $_POST и $_COOKIE. Но в отличие от перечисленных, данная переменная не изменяемая. То есть в неё нельзя записывать или менять значение её данных.
  • $_SESSION — работа с сессиями. В дампе выше не указана, потому что сессии не включались. Этот механизм служит для хранения информации о вашем сеансе на сервере.

Вот с таким количеством данных мы и стартуем при создании наших веб-программ.

Если о $_GET вы узнали вчера, то об остальных переменных более подробно ждите рассказа в следующих уроках.

Поделиться

Комментарии Правила дискуссии

Читайте ранее:
GET-запросы

Уважаемые ученики! ДвижКод вынужден прервать «Неделю MySQL», поскольку дальнейшее повествование нельзя продолжить без отступления в сферу PHP. Как показала практика,...

Закрыть