<html>
<head>
<title<>/title>
<link rel="stylesheet" type="text/css" href="iTestStili.css">
</head>
<body>
<div id="intestazione">
Test di verifica dell'apprendimento.
</div>
<div id="areaStampa">
<?php
require("account.php");
mysql_connect($Sweb, $utente, $pw)
or
die(mysql_error());
Viene avviata una connessione al server mysql. Se l'operazione non riesce viene mostrato un messaggio di errore.
mysql_select_db("iTest")
or
die(mysql_error());
Viene selezionato il data base contenente gli account degli utenti.
if(isset($_COOKIE['Autenticato'])){
$utente = $_COOKIE['Autenticato'];
$pass = $_COOKIE['Riconosciuto'];
L'utente che è entrato in questa pagina dopo aver compilato il form di Login ha inviato anche due cookie: quello denominato «Autenticato» contiene il nome utente, mentre quello denominato «Riconosciuto» contiene la password. Se il client ha spedito questi cookie, da essi, vengono lette le credenziali: nome utente e password.
$esito = mysql_query("SELECT * FROM studenti WHERE utente = '$utente'")
or
die(mysql_error());
Si interroga il data base per ottenere il record corrispondente all'utente autenticato. Nella variabile $esito c'è il risultato della query
while($info = mysql_fetch_array( $esito )) {
if ($pass != $info['pass']) {
} else {
header("Location: index.php");
}
}
La variabile $esito è una tabella temporanea contenente tutti i record che soddisfano la condizione di ricerca. La funzione mysql_fetch_array preleva una riga della tabella e la deposita nella variabile $info, che in tal modo diventa un array associativo i cui indici sono i nomi dei campi della tabella. Da questo array associativo si preleva il campo password. Se questa password non corrisponde a quella fornita si ripropone il modulo di login, altrimenti si redireziona il browser del client alla pagina index.php, ovvero all'area riservata.
} //Termine della sezione eseguita se l'utente ha inviato il cookie
if (isset($_POST['invio'])) {
if(!$_POST['utente'] | !$_POST['pass']) {
die('completa tutti i campi.');
}
Se la richiesta è pervenuta da un form si verifica se sono stati compilati i campi nome utente e password.
$esito = mysql_query("SELECT * FROM studenti WHERE utente = '" .
$_POST['utente']."'") or die(mysql_error());
$esistente = mysql_num_rows($esito);
con i due campi "nome utente" e "password" si interroga il data base per prelevare il record che soddisfa il requisito di ricerca. La funzione mysql_num_rows restituisce il numero di righe della tabella temporanea ottenuta dalla query.
if ($esistente == 0) {
echo '<p>il nome utente non esiste nel nostro archivio.</p>';
die('<a href="creaStudente.htm">registrati</a> come studente');
}
Se il numero di righe ottenuto è zero significa che non esiste nessun record associato all'utente.
while($info = mysql_fetch_array($esito )) {
$_POST['pass'] = stripslashes($_POST['pass']);
$info['pass'] = stripslashes($info['pass']);
$_POST['pass'] = md5($_POST['pass']);
if ($_POST['pass'] != $info['pass']) {
die('password errata, ripeti.');
Altrimenti si verifica se la codifica md5 della password corrisponde a quella letta dal data base. Se non corrisponde si interrompe lo script.
} else {
se l'autenticazione è riconosciuta si invia un cookie
$_POST['utente'] = stripslashes($_POST['utente']);
$durata = time() + 3600;
setcookie('Autenticato', $_POST['utente'], $durata);
setcookie('Riconosciuto', $_POST['pass'], $durata);
e l'utente viene reindirizzato nell'area riservata. Durante questo reindirizzamento il client oltre ad inviare la richiesta della pagina, invia anche il cookie
header("Location: index.php");
}
}
} else {
se si è giunti in questa pagina scrivendo l'indirizzo nella barra del browser, cercando di raggirare il controllo, viene inviato il form di login al client.
?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<table border="0">
<tr><td colspan=2><h1>Login</h1></td></tr>
<tr><td>Nome Utente:</td><td>
<input type="text" name="utente">
</td></tr>
<tr><td>Password:</td><td>
<input type="password" name="pass">
</td></tr>
<tr><td colspan="2" align="right">
<input type="submit" name="invio" value="Login">
</td></tr>
</table>
</form>
<?php
}
?>
<p>Se non hai un account vai alla pagina di <a href="creaStudente.htm">registrazione</a></p>
</div>
</body>
<html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="iTestStili.css">
</head>
<body>
<div id="intestazione">
Test di verifica dell'apprendimento.
</div>
<div id="areaStampa">
<?php
require("account.php");
mysql_connect($Sweb, $utente, $pw)
or
die(mysql_error());
mysql_select_db("iTest")
or
die(mysql_error());
if(isset($_COOKIE['Autenticato'])) {
$utente = $_COOKIE['Autenticato'];
$pass = $_COOKIE['Riconosciuto'];
Controllo della presenza dei cookie. Se ci sono, vengono letti i valori che essi contengono: Utente e Password.
$esito = mysql_query("SELECT * FROM studenti WHERE utente = '$utente'")
or
die(mysql_error());
interrogazione del data base con i dati contenuti nei cookie.
while($info = mysql_fetch_array( $esito )) {
if ($pass != $info['pass']) {
header("Location: login.php");
Se la password nel cookie è differente da quella contenuta nel data base l'utente viene inviato alla pagina di autenticazione.
} else {
switch($info['Privilegi']) {
case 'docente':
echo "<p>Inserimento questionario</p>";
echo "<p>Consultazione dei risultati</p>";
echo "<p>Manutenzione</p>";
echo "<a href=logout.php>Logout</a>";
break;
case 'studente':
echo "<p>Scegli il test</p>";
echo "<p>Consulta i punteggi</p>";
echo "<a href=logout.php>Logout</a>";
break;
default:
echo "<p>Ruolo non identificato. Ripetere <a href='login.php'>la registrazione<a>.</p>";
exit();
break;
}
}
}
} else {
header("Location: login.php");
}
?>
</body>
</html>
<?php
$durata = time() - 100;
setcookie('Autenticato', 'finito', $durata);
setcookie('Riconosciuto', 'finito', $durata);
header("Location: login.php");
?>
Si imposta la scadenza del cookie e si ritorna alla pagina di autenticazione.