Что делает $ _SERVER сам по себе?

Я наткнулся на следующие три строки кода:

$_SERVER;
$_ENV;
$_REQUEST;

Мне кажется, что эти три строки кода ничего не делают. Они не вызывают никаких ошибок.

Я знаю, что представляют собой эти три глобальные переменные, я просто не знаю, что делают эти три строки кода. Кто-нибудь может просветить меня?

Весь файл — в случае, если это актуально:

<?PHP
function register_global_array( $sg ) {
Static $superGlobals    = array(
'e' => '_ENV'       ,
'g' => '_GET'       ,
'p' => '_POST'      ,
'c' => '_COOKIE'    ,
'r' => '_REQUEST'   ,
's' => '_SERVER'    ,
'f' => '_FILES'
);

Global ${$superGlobals[$sg]};

foreach( ${$superGlobals[$sg]} as $key => $val ) {
$GLOBALS[$key]  = $val;
}
}
function register_globals( $order = 'gpc' ) {
$_SERVER;       //See Note Below
$_ENV;
$_REQUEST;

$order  = str_split( strtolower( $order ) );
array_map( 'register_global_array' , $order );
}
register_globals('GPCFRES');
?>

И нет, нет никаких примечаний ниже.

Они явно что-то делают, потому что, если я их уберу, то будут ошибки в каждой строке.

9

Решение

Я не уверен, что ваш вопрос использует правильный глагол. $ _SERVER является переменной. переменные являются контейнерами только для значений, они ничего не делают. Переменная $ GLOBALS является корнем значения массива в переменной. Переменная $ _SERVER и другие совпадают / отображаются как ключи в этом массиве. Запуск print_r или var_dump даст вам больше знаний о том, как это структурировано

<?php echo '<pre>'. print_r($GLOBALS,1) . '</pre>'; ?>

дает:

Array
(
[_GET] => Array
(
)

[_POST] => Array
(
)

[_COOKIE] => Array
(
)

[_FILES] => Array
(
)

[_ENV] => Array
(
)

[_REQUEST] => Array
(
)

[_SERVER] => Array
(
[HTTP_HOST] => fhqk.com
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=0
[PATH] => /sbin:/usr/sbin:/bin:/usr/bin
[SERVER_SIGNATURE] => Apache/2.2.15 (CentOS) Server at fhqk.com Port 80

[SERVER_SOFTWARE] => Apache/2.2.15 (CentOS)
[SERVER_NAME] => fhqk.com
[SERVER_ADDR] => 144.76.244.51
[SERVER_PORT] => 80
[REMOTE_ADDR] => 77.12.152.125
[DOCUMENT_ROOT] => /var/vhosts/fhqk.com/www
[SERVER_ADMIN] => root@localhost
[SCRIPT_FILENAME] => /var/vhosts/fhqk.com/www/informationtechnology/movico/index.php
[REMOTE_PORT] => 16183
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /informationtechnology/movico/
[SCRIPT_NAME] => /informationtechnology/movico/index.php
[PHP_SELF] => /informationtechnology/movico/index.php
[REQUEST_TIME_FLOAT] => 1428950219.959
[REQUEST_TIME] => 1428950219
)

[GLOBALS] => Array
*RECURSION*
)

Обновление: я только что прочитал код в вашем посте, и у меня была прошивка до версии php 3. Регистрация суперглобальных файлов была обычным делом в тот день. Это не то, что делается в современном PHP. Я рекомендую удалить этот код и рефакторинг, чтобы исправить любые ошибки, возникающие в результате. Регистрация суперглобалистов, где бы они ни находились, может привести к некоторой неприятной безопасности. недостатки, если не обрабатываются правильно. register_globals был объявлен устаревшим

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]