PHP 7.1.0 Released


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

import_request_variablesImposta la visibiltà a globale per le variabili GET/POST/Cookie


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

Imposta la visibilità delle variabili GET/POST/Cookie a globale. Ciò risulta utile nei casi in cui si è disabilitato register_globals, ma si vuole avere per qualche variabile una visibilità globale.

Se si vuole importare altre variabili nell'ambito di visibilità globale, come ad esempio $_SERVER, si utilizzi extract().


Questa funzionalità è stata DEPRECATA dal PHP 5.3.0 e RIMOSSA dal PHP 5.4.0.

Elenco dei parametri


Tramite il parametro types, si può specificare quale variabile rendere visibile. I valori ammessi sono i caratteri 'G', 'P' e 'C' rispettivamente per GET, POST e Cookie. Questi caratteri non distinguono tra maiuscole e minuscole, pertanto si può usare qualsiasi combinazione di 'g', 'p' e 'c'. POST include le informazioni dei file caricati.


Occorre prestare attenzione all'ordine delle lettere, ad esempio usando "GP", le variabili POST sovrascrivono le variabili GET con il medesimo nome. Qualsiasi altra lettera al di fuori di GPC sarà scartata.


Il parametro prefix viene utilizzato come prefisso nel nome della variabile, ovvero viene anteposto ai nomi di tutte le variabili portate a visibilità globale. Quindi, se si ha una variabile GET chiamata "userid", e si è passato il prefisso "pref_", si otterrà una variabile globale chiamata $pref_userid.


Sebbene il parametro prefix sia opzionale, si ottiene un errore di livello E_NOTICE se non si specifica il prefisso, o si indica una stringa vuota. Ciò può comportare dei rischi di sicurezza. Gli errori di livello "notice" non sono visualizzati con il parametro error reporting impostato al valore standard.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.


Example #1 Esempio d'uso di import_request_variables()

// Questo esempio rende visibili le variabili GET e POST 
// con il prefisso "rvar_" 


Vedere anche:

add a note add a note

User Contributed Notes 6 notes

rustamabd at gmail dot com
4 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:

ceo AT l-i-e DOT com
11 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.
brian at enchanter dot net
11 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.
samb06 at gmail dot com
10 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 ;
                                $GLOBALS = $_GET[$k] ;
11 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.
cornflake4 at gmx dot at
11 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