import_request_variables

(PHP 4 >= 4.1.0, PHP 5 < 5.4.0)

import_request_variablesИмпортирует переменные GET/POST/Cookie в глобальную область видимости

Описание

bool import_request_variables ( string $types [, string $prefix ] )

Импортирует переменные GET/POST/Cookie в глобальную область видимости. Это бывает полезно при отключенной директиве register_globals и желании видеть некоторые переменные в глобальной области видимости.

Если необходимо импортировать в глобальную область видимости другие переменные, такие как $_SERVER, воспользуйтесь функцией extract().

Внимание

Данная функция была помечена УСТАРЕВШЕЙ начиная с версии PHP 5.3.0 и была УДАЛЕНА в версии PHP 5.4.0.

Список параметров

types

С помощью параметра types, можно указать, какие переменные запроса необходимо импортировать. Можно использовать символы 'G', 'P' и 'C' соответственно для GET, POST и Cookie. Данные символы не являются регистрозависимыми, поэтому также можно использовать любую комбинацию из 'g', 'p' и 'c'. POST включает в себя информацию о загруженных файлах методом POST.

Замечание:

Имейте в виду, что порядок букв имеет значение, т.е. при использовании "GP" переменные POST перезапишут переменные GET с таким же именем. Любые буквы, отличные от GPC, игнорируются.

prefix

Префикс имени переменной, добавляемый перед всеми именами переменных, импортируемых в глобальную область видимости. То есть, если есть переменная GET с именем "userid", и указан префикс "pref_", то результатом будет глобальная переменная с именем $pref_userid.

Замечание:

Несмотря на то, что prefix - необязательный параметр, будет вызвана ошибка уровня E_NOTICE, если префикс не будет указан или будет указана пустая строка в качестве префикса. Это потенциальная брешь в безопасности. Ошибки уровня Notice не отображаются при использовании уровня отображения ошибок по умолчанию.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования import_request_variables()

<?php
// В примере импортируются переменные GET и POST
// с префиксом "rvar_"
import_request_variables("gp""rvar_");

echo 
$rvar_foo;
?>

Смотрите также

add a note add a note

User Contributed Notes 6 notes

up
11
ceo AT l-i-e DOT com
12 years ago
Call me crazy, but it seems to me that if you use this function, even WITH the prefix, then you might as well just turn register_globals back on...

Sooner or later, somebody will find a "hole" with your prefixed variables in an un-initialized variable.

Better to import precisely the variables you need, and initialize anything else properly.
up
9
rustamabd at gmail dot com
5 years ago
import_request_variables() is gone from PHP since version 5.4.0. A simple plug-in replacement it extract().

For example:

import_request_variables('gp', 'v_');

Can be replaced with:

extract($_REQUEST, EXTR_PREFIX_ALL|EXTR_REFS, 'v');
up
2
brian at enchanter dot net
12 years ago
import_request_variables does *not* read from the $_GET, $_POST, or $_COOKIE arrays - it reads the data directly from what was submitted. This is an important distinction if, for example, the server has magic_quotes turned on and you massage the data to run stripslashes on it; if you then use import_request_variables, your variables will still have slashes in them.

In other words: even if you say $_GET=""; $_POST=""; then use import_request_variables, it'll still get all the request data.

If you change the contents of $_GET and you then want to bring this data into global variables, use extract($_GET, EXTR_PREFIX_ALL, "myprefix") instead.
up
0
jason
12 years ago
reply to ceo AT l-i-e DOT com:

I don't think it's a risk, as all of your request variables will be tagged with the prefix. As long as you don't prefix any of your internal variables with the same, you should be fine.

If someone tries to access an uninitiated security-related variable like $admin_level through request data, it will get imported as $RV_admin_level.
up
-1
samb06 at gmail dot com
11 years ago
What i do is have a small script in my header file that takes an array called $input, and loops through the array to extract variables. that way the security hole can be closed, as you specify what variables you would like extracted

$input = array('name' => null, 'age' => 26) ;

// 26 is the default age, if $_GET['age'] is empty or not set

function extract_get()
    {
        global $input ;
       
        if ($input)
            {
                foreach ($input as $k => $v)
                    {
                        if ($_GET[$k] == '' or $_GET[$k] == NULL)
                            {
                                $GLOBALS[$k] = $v ;
                            }
                        else
                            {
                                $GLOBALS = $_GET[$k] ;
                            }
                    }
            }
    }
up
-2
cornflake4 at gmx dot at
12 years ago
oops, a typo in my comment:

The last line in the second example (the on using the extract() function) should read:

echo $_GET['var']; # prints 1, so $_GET has been unchanged
To Top