Pagine protette in PHP
Una protezione lato client e' sicuramente piu' facile da installare ma e' poco sicura in quanto la password risiede sul client e quindi e' facilmente rintracciabile.
Una protezione lato server e' sicuramente piu' affidabile in quanto la password risiede sul server.
In rete si trovano moltissimi script gratuiti che svolgono molto bene il loro compito sia in php che asp.. Le caratteristiche delle script in PHP presentato in questa pagina sono la facilita' di installazione e la buona sicurezza che offre.
Questo script per il suo
funzionamento utilizza le sessioni.
Le sessioni sono piccoli file di testo salvati direttamente sul server che
fa girare gli script, possono contenere qualsiasi cosa noi vogliamo,
per esempio variabili o dati in generale.
Lo script per il suo funzionamento necessita dei seguenti file:
form.htm
Questo file genera un semplice form da
compilare con nome utente e password e quindi con il metodo POST lo invia al
file:
controlla.php
Questo file che risiede solo sul
server, controlla se il nome utente e la password
corrispondano ai due valori da noi scelti. Il
significato del codice e' il seguente:
$user = "pippo";
Creo una variabile di nome $user e le assegno il valore "pippo".
$pass = "1234";
Creo una variabile di nome $pass e le assegno il valore "1234";
if ($_POST['username'] ==
$user && $_POST['password'] == $pass)
La riga può essere così commentata: SE il valore immesso nel form alla voce
username corrisponde al valore user E SE il valore immesso nel form alla
voce password corrisponde al valore pass
{session_start();
ALLORA apri una sessione
$_SESSION['login'] = "ok";
assegna alla variabile di sessione login il valore ok
$destinazione = "indexp.php";
echo '<script language=javascript>document.location.href="'.$destinazione.'"
</script>}
quindi apre la pagina iniziale protetta dal
nome indexp.php
else {
ALTRIMENTI
header("Location: form.htm");}
torna alla pagina form.htm.
Ogni pagina che vogliamo proteggere anche se scritta in html dovra' avere estensione .php e inoltre come prima riga (prima del tag <html> dovra' contenere la seguente istruzione:
<? include("inclusione.php");
?>
Questa istruzione avvia il file
inclusione.php il cui
scopo e' quello di controllare se e' stata aperta una sessione
login dal valore
ok Se cio' e' vero
ritorna alla pagina protetta, in caso contrario visualizza di nuovo il form
per l' inserimento di username e password.
Da notare che la sessione login=ok viene distrutta nel momento che si chiude il browser. In questo caso anche se si riapre il browser e si cerca di accedere direttamente a una pagina protetta inserendo il suo URL, questa non sara' accessibile e verra' visualizzato il form per l 'inserimento di user e password.
INDEXP.PHP
<? include("inclusione.php");
?>
<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>ENTRATO</title>
</head>
<body>
<p>ENTRATO!!!!!!!!!!</p>
</body>
</html>
FORM.HTM
<form name="login" action="controlla.php" method="POST">
<input type="text" name="username" value="Username..."><br>
<input type="text" name="password" value="Password..."><br>
<input type="submit" value="Login...">
</form>
CONTROLLA.PHP
<?
$user = "pippo;
$pass = "1234";
if ($_POST['username'] == $user && $_POST['password'] == $pass) {
session_start();
$_SESSION['login'] = "ok";
$destinazione = "loginLocale/indexp.php";
echo '<script language=javascript>
document.location.href="'.$destinazione.'"</script>';}
else {
header("Location: form.htm");
}
?>
session_start();
if ($_SESSION['login'] != "ok") {
header("Location: form.htm");
}
?>