dilluns, 17 de març del 2014

PHP. Variables Globals i Super-Globals. Variables Sefvidor

Variables Globals  
Quan es defineix una variable, en principi l'àmbit de la variable és on es defineix.
Per exemple, si definim una variable dins d'una funció només la podrem usar dins de la funció i no fora de la funció.

Si volem usar una variable definida en un script dins d'una funció, caldrà definir aquesta funció com a variable Global de manera que estigui disponible des de qualsevol àmbit.

El problema d'usar variables globals en una funció és que si volem usar una funció en un script que no s'ha declarat la variable global, la funció donarà error. Per tant, usar variables globals ens redueix les possibilitats de reutilitzar funcions

En tot cas, les variables globals es guarden a l'array associatiu $GLOBALS
 
Variables Super Globals

Superglobals ser introduïdes en PHP 4.1.0, i són variables incorporades que sempre estan disponibles en tots els àmbits.
 
Diverses variables predefinides en PHP són "superglobales", el que significa que sempre són accessibles, independentment d'abast - i es pot accedir a ells des de qualsevol funció, classe o arxiu sense haver de fer res especial.
Les variables de PHP superglobal són:
  • $GLOBALS
  • $ _SERVER
  • $ _REQUEST
  • $ _POST
  • $ _GET
  • $ _FILES
  • $ _ENV
  • $ _COOKIE
  • $ _SESSION
$ _SERVER
Quan un ordinador client es posa en contacte amb un ordinador servidor per sol·licitar un document, es genera en el servidor un vector associatiu, $_SERVER, que conté una sèrie de dades sobre el servidor, el client i la connexió. 

El nombre exacte de termes d'aquest vector depèn del model del servidor, però els més útils són comuns a tots. 

  • $_SERVER['SERVER_ADDR']Adreça IP del servidor.
  • $_SERVER['REMOTE_ADDR']Adreça IP de l'ordinador client.
  • $_SERVER['DOCUMENT_ROOT']Directori on hi ha el document sol·licitat.
  • $_SERVER['REQUEST_URI']Valor URI subministrat per a accedir al document.
  • $_SERVER['REQUEST_TIME']Moment de la sol·licitud.
 Per recollir dades d'un formulari tenim: $_REQUEST, $_POST i $_GET
  • $ _REQUEST s'utilitza per recopilar dades després de la presentació d'un formulari HTML.
  • $ _POST és àmpliament utilitzat per recollir les dades del formulari després de la presentació d'un formulari HTML amb method = "post". $ _POST També s'usa àmpliament per passar variables.
  • $ _GET també pot ser utilitzat per recollir les dades del formulari després de la presentació d'un formulari HTML amb method = "get".
  • $ _GET També pot recollir dades enviades a la URL.

Diferències entre GET i  POST
Tant GET i POST crear una matriu (per exemple array (clau => valor, key2 => valor2, key3 => value3, ...)).

Aquesta matriu conté parells clau / valor, on les claus són els noms dels controls de formulari i els valors són les dades d'entrada de l'usuari.

Tant GET i POST són tractats com $ _GET i $ _POST. 

Aquests són superglobals, el que significa que sempre són accessibles, independentment d'abast - i es pot accedir a ells des de qualsevol funció, classe o arxiu sense haver de fer res especial.
$ _GET És una matriu de variables passades a l'script actual a través dels paràmetres d'URL.
$ _POST És un array de variables passades a l'script actual mitjançant el mètode HTTP POST.


La informació enviada des d'un formulari amb el mètode GET és visible per a tots (tots els noms i valors de les variables es mostren a la URL). 


GET també té límits en la quantitat d'informació a enviar. La limitació és d'uns 2000 caràcters. No obstant això, pel fet que les variables es mostren a la URL, és possible marcar la pàgina, paginar resultats etc.. Això pot ser útil en alguns casos.
GET pot ser utilitzat per enviar dades no sensibles. Per tant mai usarem GET per enviar contrasenyes etc..
La informació enviada des d'un formulari amb el mètode POST és invisible per als altres (tots els noms / valors estan integrats dins del cos de la petició HTTP) i no hi ha límits en la quantitat d'informació a enviar.
A més POST suporta funcions avançades com el suport per a l'entrada de diverses parts binari en pujar arxius al servidor.
Però, ja que les variables no es mostren a la URL, no és possible marcar la pàgina.


$ _FILES
Variables proporcionades al script per mitjà de la pujada de fitxers via HTTP. Anàloga a l'antiga matriu $ HTTP_POST_FILES (la qual està encara disponible, encara que no s'usi). Vegi també Pujant fitxers per mètode POST per a més informació.

$ _ENV
Variables proporcionades al script per mitjà de l'entorn. Anàloga a l'antiga matriu $ HTTP_ENV_VARS (la qual està encara disponible, encara que no s'usi).

$ _COOKIE
Variables proporcionades al script per mitjà de HTTP cookies. Anàloga a l'antiga matriu $ HTTP_COOKIE_VARS (la qual està encara disponible, encara que no s'usi).


$ _SESSION
Variables registrades en la sessió del script. Anàloga a l'antiga matriu $ HTTP_SESSION_VARS (la qual està encara disponible, encara que no s'usi). Vegeu també la secció Funcions per al maneig de sessions per a més informació. 


Variables de Servidor

Donada la seva naturalesa de llenguatge de costat servidor, PHP és capaç de donar-nos accés a tot un seguit de variables que ens informen sobre el nostre servidor i sobre el client. La informació d'aquestes variables és atribuïda pel servidor i en cap cas ens és possible modificar els seus valors directament mitjançant l'script.
Per fer-ho cal influir directament sobre la propietat que defineixen.
Existeixen multitud de variables d'aquest tipus, algunes sense utilitat aparent i altres realment interessants i amb una aplicació directa per al nostre lloc web. Aquí us enumerem algunes d'aquestes variables i la informació que ens aporten:


$HTTP_USER_AGENT Ens informa principalment sobre el sistema operatiu i tipus i versió de navegador utilitzat per l'internauta. La seva principal utilitat és que, a partir d'aquesta informació, podem redireccionar els nostres usuaris cap a pàgines optimitzades per al seu navegador o realitzar qualsevol altre tipus d'acció en el context d'un navegador determinat.


$HTTP_ACCEPT_LANGUAGE Ens torna la o les abreviacions de la llengua considerada com principal pel navegador. Aquesta llengua o llengües principals poden ser triades al menú d'opcions del navegador. Aquesta variable és també extremadament útil per enviar l'internauta a les pàgines escrites en la seva llengua, si és que existeixen.


$HTTP_REFERER Ens indica la URL des de la qual l'internauta ha tingut accés a la pàgina. Molt interessant per generar botons de "Enrere" dinàmics o per crear els nostres propis sistemes d'estadístiques de visites.


$PHP_SELF
Ens retorna una cadena amb la URL de l'script que està sent executat. Molt interessant per crear botons per recarregar la pàgina.


$ HTTP_GET_VARS Es tracta d'un array que emmagatzema els noms i continguts de les variables enviades al script per URL o per formularis GET


$ HTTP_POST_VARS Es tracta d'un array que emmagatzema els noms i continguts de les variables enviades al script per mitjà d'un formulari POST


$HTTP_COOKIE_VARS Es tracta d'un array que emmagatzema els noms i continguts de les cookies. Veurem què són més endavant.


$PHP_AUTH_USER Emmagatzema la variable usuari quan s'efectua l'entrada a pàgines d'accés restringit. Combinat amb $ PHP_AUTH_PW resulta ideal per controlar l'accés a les pàgines internes del lloc.


$PHP_AUTH_PW Emmagatzema la variable password quan s'efectua l'entrada a pàgines d'accés restringit. Combinat amb $ PHP_AUTH_USER resulta ideal per controlar l'accés a les pàgines internes del lloc.


$REMOTE_ADDR Mostra l'adreça IP del visitant.


$DOCUMENT_ROOT Ens retorna el path físic en el qual es troba allotjada la pàgina al servidor.


$PHPSESSID Guarda l'identificador de sessió de l'usuari. Veurem més endavant en què consisteixen les sessions.


No totes aquestes variables estan disponibles en la totalitat de servidors o en determinades versions d'un mateix servidor. a més, algunes d'elles han de ser prèviament activades o definides per mitjà d'algun esdeveniment.


Així, per exemple, la variable $HTTP_REFERER no estarà definida llevat que l'internauta accedeixi a l'script a partir d'un enllaç des d'una altra pàgina 

Cap comentari:

Publica un comentari a l'entrada