mag 12
Dopo jQuery è arrivato il momento di mettersi di nuovo a studiare.
Ho necessità infatti di rispolverare le nozioni della programmazione ad oggetti e mi sono affidato ad un libro dell’Apogeo che vorrei consigliarvi.
Non è facile infatti trovare una buona documentazione in lingua italiana su questo argomento.
Il libro si intitola PHP 5 Guida Completa, è indirizzato agli sviluppatori che desiderano studiare a fondo le potenzialità di questo linguaggio, soprattutto all’OOP.
Vi lascio il link della casa editrice:
Apogeonline
E di Google Books per dare un’occhiata prima dell’acquisto:
Google Books
mag 12
Le sessioni in PHP ci consentono di trasferire informazioni da una pagina ad un’altra.
Il classico esempio potrebbe essere il caso di un’area riservata alla quale si accede tramite un form di login. Senza l’ausilio delle sessioni (e in particolare dei cookies che esse utilizzano) sarebbe difficile, oltre che strutturalmente scorretto, ricordare il login dell’utente una volta che chiude il browser oppure quando passa ad una pagina successiva.
Nella nostra pagina di login dove è presente il form per l’inserimento delle credenziali, come primissima cosa diciamo al server di iniziare una nuova sessione:
<?php session_start() ?>
/* qui ci sarà il form */
La pagina, una volta inviati i dati dal form, dovrà controllare che le credenziali siano corrette. Se lo sono possiamo salvarci dei dati grazie alla superglobale $_SESSION in questo modo:
<?php
// salvo l'id utente
$_SESSION['id_utente'] = $id_utente;
?>
Una volta che abbiamo salvato il nostro dato, possiamo utilizzarlo nelle pagine che seguiranno (come ad esempio una pagina della scheda di un documento riservato) in questo modo:
<?php
session_start();
if(isset($_SESSION['id_utente'])){
// l'utente è loggato
} else{
die('Area ad accesso riservato');
}
?>
Come vedete è sempre necessario inizializzare la sessione con session_start().
La primissima cosa che potrebbe venirci in mente è quella di salvarci in un’altra variabile di sessione (cookie) la password dell’utente criptata, in modo tale da effettuare il controllo della coppia id_utente – password nel nostro database.
Per concludere vediamo ora come si chiude una sessione, ad esempio per la classica azione di logout di un utente:
<?php
session_start();
$_SESSION = array(); // svuoto la superglobale
session_destroy();
?>
Attenzione
Una volta settata una variabile di sessione (cookie) è necessario eseguire un header(‘Location’) per fare in modo che la pagina stessa riconosca il cookie settato.
Ad esempio, se abbiamo il form di login contenuto nella pagina area_riservata.php e vogliamo fare in modo che, se l’utente è loggato, visualizzi un elenco di documenti, altrimenti visualizzi il form, dobbiamo fare in questo modo:
<?php
session_start();
if($_POST['azione'] == 'invia_form'){
// salvo l'id utente
$_SESSION['id_utente'] = $id_utente;
header('Location /area_riservata.php');
exit;
}
if(isset($_SESSION['id_utente'])){
// l'utente è loggato, visualizzo elenco doc
} else{
// l'utente non è loggato, visualizzo il form di login
}
?>
mar 10
Oggi mi sono trovato di fronte al classico form di registrazione di un utente con relativo form di login.
La mia prima preoccupazione è stata ovviamente la validazione e il filtraggio dell’input dell’utente.
Ero già pronto a prendermi le classiche espressioni regolari per controllare email, input di testo, date ecc… Ma proprio oggi leggevo un interessantissimo articolo su mattiasgeniar.be, un buon blog di uno sviluppatore, dove veniva presentata un’innovativa soluzione, introdotta con PHP5, per validare e filtrare l’input degli utenti: filter_var().
Ammetto di essere rimasto affascianato dalla semplicità con cui ora posso validare e filtrare i dati.
Ecco alcuni esempi (Attenzione: filter_var() è presente SOLO da PHP5 in poi).
Validazione di una mail:
<?php
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) echo 'Email non valida';
?>
Strip di tutto ciò che non è una stringa (pensiamo ad esempio ad un commento nel nostro blog):
<?php
$commento = "<h1>Ciao a tutti, il mio <a href='http://www.google.it'>blog è qui</a></h1>";
$commento = filter_var($commento, FILTER_SANITIZE_STRING);
// Restituisce Ciao a tutti, il mio blog è qui
?>
E questi sono solo due semplicissimi esempi che solitamente necessitano di strip_tags, espressioni regolari ecc…
Onestamente trovo questo filter_var una vera manna!
Vi lascio il link di tutti i possibili parametri (sono veramente molti) per la filter_var:
http://mattiasgeniar.be/2009/02/07/input-validation-using-filter_var-over-regular-expressions/