Показать сообщение отдельно

  #14  
Старый 22.03.2008, 19:21
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме:
4839935

Репутация: 1202


По умолчанию


To nerezus, [ cash ]
совершенно верно, не претендую на первоткрывателя.
Это обзор того что известно, только все вместе с моими коментариями и некоторыми доработками.


[ _REQUEST {variables_order} OVERWRITE ]

Глобальный массив реквеста формируется по принципу последней перезаписи переменных из других глобальных массивов в порядке, заданном директивой php.ini :

variables_order = EGPCS (по дефолту)

где
E - $_ENV[]
G - $_GET[]
P - $_POST[]
C - $_COOKIE[]
S - $_SERVER[]


только для реквеста енв и серверный массивы будут проигнорированны.

Тоесть в данном порядке конечные значения $_REQUEST будут переписаны содержимым куков в последнюю очередь.

Это можно использовать при криво поставленных фильтрах безопасности со всеми вытекающими.
Примерно как и импортреквест для инклуда в слаеде.
Кстати дайте мне в ПМ последнюю его версию, потестим.


Пример, есть код:

PHP код:
<?php

print "variables_order : ".ini_get('variables_order')."<br>";

print 
"<br>GET   : ";print_r($_GET);
print 
"<br>POST  : ";print_r($_POST);
print 
"<br>COOKIE: ";print_r($_COOKIE);

print 
"<br><br>REQUEST: ";print_r($_REQUEST);

?>
Шлем пакет на скрипт:

Код:
POST /1.php?a=1 HTTP/1.0
Host: localhost
Cookie: a=3;
Content-Length: 3
Content-Type: application/x-www-form-urlencoded

a=2
Наблюдаем:

Код:
variables_order : EGPCS

GET : Array ( [a] => 1 ) 
POST : Array ( [a] => 2 ) 
COOKIE: Array ( [a] => 3 ) 

REQUEST: Array ( [a] => 3 )


Последний раз редактировалось Elekt; 01.04.2008 в 14:48..
 
Ответить с цитированием