ALL WEB free. Descrizione, utilizzo ed errori correlati alle variabili globali di PHP

ALLWEB  


Home  -  Mappa directory Aggiungimi a Preferiti
ARTICOLI
» Php Contatore
» Php Contatore .txt
» Php Database .txt
» Php Redirect
» Php Info-Navigatori
» Php-Css caratteri
» Php register_globals
» Ottimizzare siti

Variabili globali PHP:

Il processo che consente il passaggio dati fra pagine web è un mattone fondamentale per la costruzione di siti dinamici.
La procedura che può apparire semplice genera il problema di superare le barriere che spesso i diversi spazi web pongono al suo utilizzo.
In effetti gli script che troviamo in rete possono funzionare teoricamente su ogni spazio web che supporta il linguaggio PHP. In pratica alcuni script si possono bloccare per i limiti posti dal gestore dello spazio web e per il continuo progredire del linguaggio PHP.

Il limite che analizziamo adesso è quello generato dall'impostazione di register_globals

register_globals Impostato su ON permette di utilizzare le variabili globali solo digitando il nome della variabile.

register_globals Impostato su OFF permette di utilizzare le variabili globali solo DOPO che sono state ricavate dall'array globale generato.

In questo articolo analizziamo register_globals OFF



Descrizione:

Per passare dati fra pagine web il metodo da usare è il solito, ossia con variabili GET, POST o SESSION.
La diversità la troviamo quando sulla pagina di destinazione dobbiamo utilizzare le variabili che abbiamo spedito.
In pratica dobbiamo ridefinire le variabili utilizzando i dati che troviamo fra le variabili globali.


Con alcuni esempi possiamo comprendere quello appena detto:

Esempio:
Pagina di partenza:
....
....
<a href="pag_destinazione.php?ciao=1>....</a>
//esempio di passaggio dati con GET
<form action="pag_destinazione.php" method="post">
//esempio di passaggio dati con POST
....
<input type="text" name="ciao2" size=10 maxlength=10>
<input type="submit" value="Spedisci">
....
</form>


Pagina di destinazione:
$ciao=$_GET['ciao'];//Prendiamo la variabile dall'array globale $_GET
$ciao2=$_POST['ciao2'];
//Prendiamo la variabile dall'array globale $_POST
....
....

Come abbiamo visto il loro utilizzo è molto semplice, basta ridefinire le variabili nella pagina di destinazione.

Domanda:
Se trasmetto la stessa variabile con entrambi i metodi (sia GET che POST)?
Risposta:
Semplice, basta inserire un ciclo IF che controlli che tipo di variabile è stata definita.
if ($_GET['ciao']==null){//Chiedo se il metodo GET è nullo
$ciao=$_POST['ciao'];
//Se GET è nullo la variabile è POST
}
else{
//Viceversa, se la variabile GET Non è nulla...
$ciao=$_GET['ciao'];
//... utilizzo la variabile GET
}



Sessioni:

Stesso metodo per ridefinire le variabili delle sessioni, dobbiamo solo usare la seguente sintassi nella pagina di destinazione:

$ciao=$_SESSION['ciao'];

Da adesso abbiamo a disposizione anche la variabile '$ciao' trasmessa con una sessione.


Sicurezza

register_globals OFF si utilizza per migliorare la sicurezza con PHP, per scongiurare che un malintenzionato inserisca delle variabili fittizie o con valori falsati, che potrebbero modificare il risultato delle pagine, e nei casi peggiori modificare anche un valore dentro ad un database (dipende dalla funzione dello script).

Con gli array globali scongiuriamo che questo avvenga, o almeno aiutiamo lo script nella protezione.
Per aumentare ancora la protezione dello script suggeriamo di non spedire i valori da manipolare, ma delle variabili di controllo.

Esempio:
Se devo trasmettere un valore per aggiungere o modificare un dato (Y) in un database non inserisco il dato (Y), ma un valore X.
Nella pagina di destinazione chiedo se il valore trasmesso è X, e di conseguenza sommo (uso) Y.
Questo se il dato Y è una costante, tuttavia è da evitare (se possibile) di trasmettere i dati direttamente con URL (Metodo GET) o con i form (Metodo POST), questo perché chiunque può vedere il codice.

Approfondiamo in pratica:
Immaginiamo di dover contare i clic in entrata su un sito per inserirlo nella top-ten del nostro sito.
In questo caso ogni volta che clicchiamo sul sito dobbiamo aumentare di '1' il numero di clic nel database.
Potrei scrivere una riga tipo:
<a href="redirect.php?clic=1&url=www.urlsito.it">Nome sito</a>
In questo caso NON DEVO usare direttamente $clic come variabile di somma nel database. Questo perché un malintenzionato potrebbe utilizzare il nome della variabile ($clic) per generare degli script che danneggiano il sito.

Per non dare la possibilità di manipolare dati dobbiamo usare $clic come variabile di controllo.
In pratica nella pagina dove inseriamo la query per la manipolazione dati dobbiamo inserire un filtro, un semplice ciclo IF:
If ($clic==1){
$numeroclic=$numeroclic+1;
}
In questo modo abbiamo scongiurato ogni attacco diretto alle variabili, ed il nostro malintenzionato non saprà mai come si chiama la variabile di somma ($numeroclic).







Programmazione
» HTML
» CSS
» JAVASCRIPT
» PHP
» MYSQL

Utility
» Tavolozza colori
» Crea metacomandi
» Crea pop-up

Script
Motore di ricerca script
Javascript PHP
ALL WEB free Directory con centinaia di link. Articolo sulle variabili globali in PHP. Descrizione ed utilizzo delle variabili globali con il linguaggio PHP.


Link amici