Qualcosa di utile
Andiamo a fare qualcosa di leggermente più utile. Andremo a controllare
che tipo di browser sta utilizzando la persona che visita le nostre pagine.
Per fare questo si andrà a controllare la stringa dell'user agent che il browser
invia come parte della richiesta HTTP. Quest'informazione viene inviata in una variabile. Le Variabili iniziano sempre
con il simbolo del dollaro in PHP. La variabile alla quale ci riferiamo adesso
è $_SERVER["HTTP_USER_AGENT"].
Nota:
$_SERVER è una variabile
speciale riservata a PHP la quale contiene tutte le informazioni relative al Web Server.
È conosciuta come Variabile autoglobale (o Superglobale). Per maggiori informazioni
è possibile vedere la pagina del manuale relativa alle
Variabili Autoglobali. Questo tipo di variabili è stato introdotto nella versione
» 4.1.0 di PHP. Nelle versioni precedenti abbiamo
utilizzato gli ormai vecchi array $HTTP_*_VARS,
come $HTTP_SERVER_VARS. Dal PHP 5.4.0
queste variabili sono state rimosse. (Potete guardare nelle note
del vecchio codice.)
Per visualizzare questa variabile, dobbiamo semplicemente:
Example #1 Stampare a video una variable (un elemento d'Array)
<?php
echo $_SERVER["HTTP_USER_AGENT"];
?>
L'output (risultato) di questo script potrebbe essere:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Ci sono molti types (tipi) di
variabili disponibili in PHP. Nell'esempio di sopra abbiamo stampato
un elemento di un Array.
Gli Array possono essere molto utili.
$_SERVER è soltanto una variabile che automaticamente
viene resa diponibile da PHP. È possibile visualizzare una lunga lista nella
sezione Variabili riservate del manuale
oppure ottenere la lista completa cercando
nell'output della funzione phpinfo() utilizzata nell'esempio
della precedente sezione.
Si possono inserire istruzioni PHP multiple all'interno di un tag PHP e creare
piccoli blocchi di codice che fanno più di un singolo echo.
Per esempio, se si volesse controllare se l'utente usa Internet Explorer si potrebbe
fare questo:
Example #2 Esempi usando le strutture di
controllo e le funzioni
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
echo 'Stai usando Internet Explorer<br />';
}
?>
L'output di esempio di questo script potrebbe essere:
Stai usando Internet Explorer<br />
Qui introduciamo un paio di nuovi concetti. Abbiamo l'istruzione
if (se). Se avete una conoscenza
con la sintassi di base usata dal linguaggio C, questo dovrebbe sembrare
logico per voi. In caso contrario, dovreste probabilmente prendere
qualsiasi libro introduttivo di PHP e leggere i primi capitoli, o leggere
la parte del manuale relativa ai Riferimenti del
Linguaggio.
Il secondo concetto che abbiamo introdotto era la chiamata alla funzione
strpos(). Questa è una funzione sviluppata in PHP
che cerca una stringa all'interno di un'altra stringa. In questo caso
abbiamo cercato 'MSIE'
(cosiddetta occorrenza) all'interno della stringa
$_SERVER["HTTP_USER_AGENT"] (cosiddetta haystack). Se la stringa viene trovata all'interno dell'haystack,
la funzione restituisce la posizione dell'occorrenza
relativa all'inizio dell'haystack. Altrimenti, restituisce false
.
Se non restituisce false
, l'espressione if
viene valutata come true
ed il codice all'interno dei relativi {braces} (sostegni) sarà
eseguito. Altrimenti, il codice non sarà eseguito. Sentitevi liberi di generare esempi
simili, con if,
else (altrimenti), ed altre
funzioni quali strtoupper() e strlen().
Ogni pagina del manuale, relativa a queste funzioni contiene anche degli
esempi pratici. Se non sei sicuro di come utilizzare queste funzioni, vorrai leggere le
pagine del manuale su come leggere una
definizione di funzione e la sezione sulle
funzioni PHP.
Possiamo fare un passo avanti e mostrarvi come potete entrare ed uscite dal modo
PHP anche dall' interno di un blocco PHP:
Example #3 Intercalare i modi PHP e HTML
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() dovrebbe ritornare non-false</h3>
<b>Stai usando Internet Explorer</b>
<?php
} else {
?>
<h3>strpos() dovrebbe ritornare false</h3>
<b>Non stai usando Internet Explorer</b>
<?php
}
?>
L'output di esempio di questo script potrebbe essere:
<h3>strpos() dovrebbe ritornare non-false</h3>
<b>Stai usando Internet Explorer</b>
Invece di usare la dichiarazione echo per fare l'output di qualcosa, saltiamo
fuori dalla modalità PHP inviando soltanto HTML puro. Il punto importante da notare qui
è che il flusso logico dello script rimane intatto. Solo uno dei blocchi
di HTML finirà per essere inviato come risposta, dipendendo dal
risultato di strpos(). In altre parole, dipende
se la stringa MSIE
viene trovata o meno.