Salve, qualche giorno fa un mio amico mi aveva chiesto una mano per realizzare un semplice script per permettere di controllare l’utenza sul proprio sito. Terminato lo script mi sembrava utile condividerlo con chi ne avesse bisogno; i nostro obiettivi sono semplici:

1. realizzare una piccola form per permettere all’utente di loggarsi
2.creare uno script per il controllo delle credenziali
3. realizzare uno script da incollare in ogni pagina per il controllo delle credenziali

Form di Login
Il primo è presto fatto: non facciamo altro che aprire un file con estensione php e incollare questo codice:

<html>
<head>
<title>Login Area</title>
</head><body>
<?php

if(isset($_GET[‘error_login’]))
{
echo “Error ,please compile correctly the form!”;
}
?>
<form method=”post” action=”login2.php”>
<table>
<tr>
<td>Username</td>
</tr>
<tr>
<td><input type=”textbox” name=”user” id=”user” /></td>

</tr>
<tr>
<td>Password</td>
</tr>
<tr>
<td><input type=”text” name=”pass” id=”pass”/></td>

</tr>
<tr>
<td><input type=”submit” value=”Log In” /></td>
</tr>
</table>
</form>
</body>
</html>

 Il codice è molto semplice: realizziamo una semplice form html con soli due text, una per inserire lo user, l’altra per la password ( ricordate il type=”password” in modo tale che i caratteri digitati siano nascosti da un punto), l’importante è settare il method a post ( il metodo per lo scambio delle informazioni) e soprattutto l’attributo action=”login2.php” , il cui nome dovrà corrispondere al nome della pagina script incaricata di controllare le nostre credenziali. Il codice php all’inizio della pagina ci servirà successivamente per segnalare all’utente un errato inserimento dei dati; tale messaggio di errore verrà stampato a video solo se una variabile get ( quelle variabile che compaiono nell’url della pagina preceduta dal punto di domanda) è settata ad un certo valore.

Controllo credenziali

Singolo Utente:Apriamo un file con estensione php e inseriamo questo codice php, ricordandoci di salvarlo come login2.php o comunque con lo stesso nome dell’attributo method:

<?php

session_start();

$user=”user”;

$pass=”password”;

$page_to=”http://pralevis.com/wordpress/“;

if(isset($_POST[‘user’]) && isset($_POST[‘pass’]))

{

if( $_POST[‘user’]==$user && $_POST[‘pass’]==$pass)

{

$_SESSION[‘isLogged’]=”true”;

header(“Location:”.$page_to);

}

else

{

header(“Location:login.php?error_login=1”);

}

}

else

{

header(“Location:login.php?error_login=1”);

}
?>

Prima di tutto creiamo una sessione con session_start() e salviamo in due variabili php lo user e la password necessari per accedere al sito. Successivamente assegniamo a $page_to l’indirizzo assoluto ( o relativo ) a cui si potrà accedere dopo che l’utente si sarà loggato correttamente. I successivi due if controllano se sono state passate delle variabili tramite il form di login e se tali valori sono equivalenti a quelli definiti precedemente: in caso positivo,verrà salvato una variabile in sessione per confermare il corretto login e verrà inviato direttamente alla pagina di portale, in caso negativo, verrà immediatamente fatto ritornare alla pagina di login inserendo nell’url una variabile che farà scattare il messaggio di errore (login.php?error_login=1).

Multiutente: in caso di più utenti, saremmo costretti a fare una ricerca su un array precostruito. Ecco il codice:

<?php

session_start();

$utenti[0][“user”]=”user1″;
$utenti[0][“pass”]=”pass1″;
$utenti[1][“user”]=”user2″;
$utenti[1][“pass”]=”pass2″;
$utenti[2][“user”]=”user3″;
$utenti[2][“pass”]=”pass3″;
$page_to=”http://pralevis.com/wordpress/“;
$isLogged=false;

if(isset($_POST[‘user’]) && isset($_POST[‘pass’]))
{
for($i=0;$i<count($utenti);$i++)   {

if( $_POST[‘user’]==$utenti[$i][“user”] && $_POST[‘pass’]==$utenti[$i][“pass”] )
 {
 $isLogged=true;

 }
}

if($isLogged)
{
 $_SESSION[‘isLogged’]=”true”;
 header(“Location:”.$page_to);
}
else
{
header(“Location:login.php?error_login=1”);

}

 }

else {
header(“Location:login.php?error_login=1”);

}
?>

Dopo aver creato l’array multidimensionale ( creiamo una coppia User-pass con relativo intero crescente per ogni utente che desideriamo includere nel nostro sito), parte la ricerca dentro la struttura dati, in caso positivo setto una variabile booleana ( $isLogged) a true, e successivamente tramite esso eseguo il redirect alla pagina del sito, altrimenti all’uscita del ciclo la variabile rimane inizializzata a falso e scatta il ritorno al form di login.

Funzione di Controllo credenziali

Fatto ciò, non rimane altro che impedire l’accesso alle altre pagine del nostro portale previa autenticazione. Per fare ciò, non ci basterà altro che modificare l’estensione dei nostri file se questi sono dei html ( dovranno ora diventare dei file con estensione .php ) e copiare questo codice php all’inizio della pagina PRIMA di ogni altra cosa:

<?php

session_start();
if(!isset($_SESSION[‘isLogged’]))
{
header(“Location:login.php?error_login=1″);
}
else {
if($_SESSION[‘isLogged’]!=”true”)
{
header(“Location:login.php?error_login=1”);
}
}?>

Questo codice non fa altro che fare due controlli: se non esiste l’array di sessione o se il valore non è settato correttamente, esso farà un redirect alla nostra solita pagina di login, altrimenti non eseguirà alcun comando e l’utente sarà libero di accedere alla pagina una volta che ‘html sarà visualizzato.

Come vedete gli script sono molto banali e sono stati spogliati di ogni altra funzionalità ( non vi è filtraggio degli input per togliere eventuali input sporchi, ne controlli lato client per evitare di lasciare vuoti i campi…) ed appaiono estremamente semplici e pronti a qualunque modifica.Il codice di questi script sarà consultabile e scaricabile presso il repository Lab.

Grazie per l’attenzione,

Andrea