Con la definizione di funzioni
e classi abbiamo
esaurito le nozioni fondamentali
di PHP.
Arrivati a questo punto non
dovrebbe quindi essere un problema
affrontare un compito
molto pratico (e utile), ossia
elaborare qualche strategia per
proteggere una o più pagine
del nostro sito Web da occhi indiscreti.
In pratica, vogliamo
che a certe pagine possano
avere accesso solo le persone
dotate di una password, o meglio
di una precisa accoppiata
username-password.
I motivi di questa decisione
possono essere i più vari: su
una pagina possiamo avere inserito
testi e immagini che solo
i nostri amici più cari devono
leggere, ma potrebbe anche essere
una esigenza di lavoro che
ci impone di tutelare certe
informazioni, oppure una parte
del Web site deve essere protetta
perché da essa è possibile
gestire gli aggiornamenti del
sito stesso.
Qualunque sia il motivo, abbiamo
la necessità di proteggere
l'accesso a una pagina. Vediamo
adesso un paio di esempi,
rimandando poi l'approfondimento
del discorso a dopo
l'introduzione dei database (lezione
4).
PHP ci consente di ottenere
la protezione di una pagina in
molti modi. Quello scelto per
esercizio implica la creazione
di una funzione e l'uso di un ciclo
di controllo (listato_08). La
pagina di esempio è protetta_
1.php, e al primo accesso ci
fa vedere un form dove l'unico
campo da compilare è quello
relativo alla password da inserire.
La funzione controllo si occupa
solo di restituire un valore
true o false, a seconda che il
confronto tra le due variabili
dia esito positivo o negativo.
Nel nostro caso, il valore restituito
dalla funzione sarà assegnato
a una variabile $check, la
quale chiama la funzione usando
come campi la password inserita
nel form e la password
definita da noi (pluto). Se
$check avrà valore true allora la
pagina sarà visualizzata, altrimenti
ci troveremo di nuovo di
fronte al form vuoto.
Inserisci la password corretta per
entrare nella pagina protetta
Hai inserito la password
giusta. La pagina è a tua
disposizione";
}
?>
listato 8
Una variazione sullo stesso
tema (meno elegante, ma
ugualmente efficace) la potete
vedere in protetta_1_var.php.
Per migliorare la costruzione
presentata, bisogna quantomeno
posizionare in un file
esterno la funzione e il valore
assegnato da noi alla password
(vedere password.inc.php e protetta_
1_inc.php).
In questo modo è possibile
usare il costrutto include per
inserire senza errori la stessa
password in più pagine e se si
modifica la password lo si fa in
un unico punto.Un altro limite, però, è proprio
quello di avere una sola
password per tutte le persone
che hanno accesso alle pagine:
se dovessimo cambiarla per
motivi di sicurezza (poniamo
che sbadatamente qualcuno
abbia comunicato la password
a persone non autorizzate) dovremo
informare necessariamente
tutti gli attori coinvolti.
Sarebbe invece più efficiente
assegnare a ogni persona una
diversa coppia username-password,
in modo da modificare,
eventualmente, soltanto la password
di quella persona specifica.
Vediamo allora di modificare
il codice precedente, introducendo
un controllo usernamepassword.
Usiamo la stessa logica vista
nel primo esempio, con la novità
di creare un array contenente
le coppie username-password.
La parte di codice che ci interessa
(con la nuova funzione
di confronto e con l'array $coppie)
è visibile in listato_09:
function controllo_coppia($confronto,
$user,$pass) {
foreach ($confronto as $chiave=>$val)
{
if ($chiave==$user and $val==$pass) {
return true;
}}
return false;
}
// valori di username e password
decisi da noi
$coppie=array("pippo"=>"pluto",
"topolino"=>"minni",
"paperino"=>"paperina");
// $check darà un valore true o false
$check=controllo_coppia($coppie,$_
POST['user'],$_POST['pwd']);
listato_09
La parte che segue il listato 9
è uguale a quanto già visto e l'esempio
completo è riportato
sulla pagina protetta_2.php.
Adesso siamo in grado di modificare
username e password
delle singole coppie.
Anche in questo caso, poi,
sarà buona consuetudine portare
in un file esterno la funzione
e la definizione di $coppie
(vedi pagine password_2.inc.
php e protetta_2_inc.php).
Nel prosieguo del corso vedremo
come usare i database
per proteggere una pagina e
come evitare di dover inserire
username e password su ogni
pagina protetta.
http://www.infoprodotti.info
0 commenti:
Posta un commento