Il linguaggio PHP è abbastanza vasto, nella sua seplicità.
Magari ad alcuni può sembrare contorto, soprattutto se si conoscono già linguaggio C-Like come il C (o il C++) o come Java. Ma dopo un paio di righe di codice si prende subito confidenza con questo linguaggio di scripting per le web application.
Certo.. molti lo considerano un linguaggio “sporco”; un linguaggio dove ogni variabile non deve essere né definita né tipizzata è sicuramente confusionario, soprattutto se poi il linguaggio è anche case-sensitive. Ma, come ho detto, ci si prende confidenza quasi immediatamente, e se si ha un po’ di fantasia si possono realizzare cose veramente eccezionali.
In questa prima discussione sul PHP voglio mostrare come sia possibile realizzare un form di login utilizzando pochissime righe di codice e solamente un paio delle funzioni definite dalla documentazione di PHP.
Il modulo di login si compone sostanzialmente di 3 file PHP.
- loginTest.php
- loginForm.php
- loginData.php
loginTest.php è la pagina principale, dalla quale si verrà reindirizzati o al form di inserimento dati o alla pagina di stampa dei dati ottenuti dal form.
Il codice di questo file è il seguente (successivamente commenterò riga per riga):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <? session_start(); $_SESSION['title'] = "Pagina di Login"; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $_SESSION['title'] = "Visualizzazione Dati Login"; $_SESSION['formData'] = $_POST; unset($_POST); header("Location:loginData.php"); } else { $_SESSION['title'] = "Inserimento Dati Login"; header("Location:loginForm.php"); } ?> |
Come è facile intuire, con la prima funzione:
session_start();
come si possa avviare il salvataggio delle sessioni utente. Ogni utente che accede alla pagina eseguirà una funzione indipendente dalle altre.
Si potranno quindi utilizzare le variabili di sessione
$_SESSION['nome_variabile']
come avviene con la variabile
$_SESSION['title'];
alla quale viene assegnata la stringa: Pagina di Login.
Questa stringa non verrà mai visualizzata nelle pagine successive, perché ogni volta sostituita con altre stringhe.
In questo modo è molto chiaro come le variabili di sessione possano essere utilizzate da una pagina all’altra senza che il loro contenuto cambi, a meno che non siamo noi a volerlo cambiare.
Per spiegare l’istruzione successiva occorre dire che PHP mette a disposizione delle variabili globali per accedere ad informazioni, ad esempio, sullo stato del server istante per istante.
In questo caso la variabile
$_SERVER['REQUEST_METHOD']
ci da informazioni sul tipo di richiesta che la pagina ha inviato al server.
Dato che dobbiamo prelevare informazioni sensibili, come uno username e una password, occorre inviare questi dati al server mediante il metodo POST ovvero mediante un metodo che nasconde all’utente l’invio di tali dati.
Per poter capire se la pagina ha ricevuto dati con il metodo POST si utilizza quindi il valore memorizzato nella variabile globale indicata precedentemente.
Se il controllo sul contenuto di tale variabile ha avuto successo con il parametro di confronto di cui avevamo bisogno, allora si può assegnare alla variabile di sessione contenente il titolo della pagina, il nuovo titolo, mentre si salva in una nuova variabile di sessione il contenuto dei dati POST memorizzati nell’array globale
$_POSTe si provvede a distruggere il contenuto di questo array mediante il metodo
unset($variabile);
per evitare che si possa accedere a questo array, dopo che si sono riceuti i dati.
Infine si reindirizza il browser alla pagina loginData.php per visualizzare i dati ottenuti da questi passaggi.
Da notare che nel caso in cui la pagina non ha ricevuto richieste di tipo POST il reindirizzamento è al form di immissione dati identificato dalla pagina loginForm.php.
Ecco il codice del form:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <? session_start(); ?> <html> <head> <title><?=$_SESSION['title'];?></title> </head> <body> <h2><?=$_SESSION['title'];?></h2> <form action="./loginTest.php" method="post"> <label for="username">Username: </label> <input id="username" name="usr" type="text" /> <label for="password">Password: </label> <input id="password" name="psw" type="password" /> <input value="login" type="submit" name="submit" /> </form> </body> </html> |
Mentre questo è il codice della pagina di visualizzazione dati:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <? session_start(); ?> <html> <head> <title><?=$_SESSION['title'];?></title> </head> <body> <h2><?=$_SESSION['title'];?></h2> <? print_r($_SESSION['formData']); ?> <a href="./loginTest.php">Reimmetti i dati di login</a> </body> </html> |
loading...
