Realizzazione Siti e Portali Web – Wordpress CODING – Mobile APP – Consulenze SEO – Web design – Ecommerce     Login / Register

PHP register_globals: come superare facilmente il passaggio da “on” a “off”

register_globals è una direttiva della quale si è sicuramente abusato prima della versione 4.2.0 di PHP.

Prima di allora, infatti, il suo valore predefinito era “On”. Dalla versione 4.2.0 il valore predefinito è passato a “Off”, per diventare nel tempo una direttiva prima deprecata, e poi rimossa a partire dal PHP 5.4.0

Se in un sito stavamo lavorando con register_globals=on e per qualche motivo lo abbiamo dovuto trasferire su un altro server, o se il provider ha effettuato un aggiornamento della versione di PHP e non abbiamo accesso al php.ini, potremmo avere problemi molto seri se con il passaggio ci troviamo register_globals=off

Ovviamente partiamo dal presupposto che il codice dovrebbe essere scritto correttamente

ma se prima usavamo le variabili senza aver specificato la loro provenienza, nella nuova situazione le troveremmo sempre vuote, con conseguenze immaginabili.

La soluzione migliore sarebbe senza dubbio di mettere le mani al codice, variabile per variabile, ma si sa, spesso ci si trova in situazioni di emergenza, per cui non ci si può permettere di avere il sito down per troppo tempo.

Una soluzione rapida e indolore, che possa fungere da tampone nell’attesa di intervenire sul codice in maniera adeguata, è questa:

è quasi sicuro che ci sia un file incluso da tutti gli altri; tipicamente è il file dove si crea il collegamento dal database, o un file di configurazione. In questo file bisogna aggiungere le seguenti righe:

 

Dal momento che $_POST, $_GET e $_SESSION sono array, si scorrono i loro elementi e si assegna il valore ad una variabile che si chiama come la chiave.

E’ molto più facile capire con un esempio: se devo prelevare i valori dei campi di un form, che si chiamano “campo1”, “campo2”, “campo3″, avremo che:

Con la sintassi vista sopra sto dicendo: il contenuto della chiave diventa il nome di una variabile (${$chiave} e gli assegno il valore.

Quindi avrò: $campo1=”valore1”, che è quello che facevamo con register_global=on

In questo modo il sito non subirà interruzioni se non per qualche minuto, il tempo necessario ad aggiungere quelle righe di codice.

Ripeto, non è la soluzione definitiva, ma almeno non avremo l’ansia e non dovremo passare ore e ore a sistemare subito il problema 🙂

Related posts

Leave a Comment

Lascia un commento

Your email address will not be published.




Top