PHP Velho Oeste 2024

import_request_variables

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

import_request_variablesImporta variáveis GET/POST/Cookie para o escopo global

Descrição

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

Importa variáveis GET/POST/Cookie para o escopo global. É útil se desabilitar register_globals, mas se quer ter algumas variáveis no escopo global.

Se está interessado em importar outras variáveis para o escopo global, como a $_SERVER, utilize a função extract().

Aviso

Esta função tornou-se OBSOLETA desde o PHP 5.3.0 e foi REMOVIDA desde o PHP 5.4.0.

Parâmetros

types

Usando o parâmetro types, você pode especificar que variáveis serão importadas. Você pode usar os caracteres 'G', 'P' e 'C' respectivamente para GET, POST e Cookie. Estes caracteres não são case sensitive, então você pode também usar qualquer combinação de 'g', 'p' e 'c'. POST inclue informação sobre arquivos enviados.

Nota:

Note que a ordem das letras importa, como quando usando "GP", fará as variáveis POST sobrescreverem as variáveis GET com mesmo nome. Qualquer letras diferentes de GPC são descartadas.

prefix

Prefixo no nome de variáveis, prefixa todos os nomes de variáveis antes de ser importadas para o escopo global. Então se tiver um valor GET nomeado "userid", e fornecer "pref_" como prefixo, uma variável global chamada $pref_userid será definida.

Nota:

Embora o parâmetro prefix seja opcional, você irá receber E_NOTICE se não especificar um prefixo, ou se especificar uma string vazia como prefixo. Isto é possível risco de segurança. Avisos não serão mostrados usando o nível padrão error reporting.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em caso de falha.

Exemplos

Exemplo #1 Exemplo da função import_request_variables()

<?php
// This will import GET and POST vars
// with an "rvar_" prefix
import_request_variables("gp""rvar_");

echo 
$rvar_foo;
?>

Veja Também

add a note add a note

User Contributed Notes 6 notes

up
8
ceo AT l-i-e DOT com
19 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
5
brian at enchanter dot net
19 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
1
rustamabd at gmail dot com
12 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
-1
jason
18 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
-2
samb06 at gmail dot com
18 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
-3
cornflake4 at gmx dot at
19 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