Sviluppo di un sistema di login con PHP e MySQL
Molti siti web interattivi richiedono agli utenti di effettuare l’accesso per offrire un’esperienza personalizzata. Con l’accesso, il sito può presentare contenuti adattati alle preferenze dell’utente.
Un sistema di accesso di base include di solito 3 componenti:
1. Un componente che permette agli utenti di registrare un ID di accesso e una password preferiti.
2. Un componente che verifica l’identità dell’utente al momento dell’accesso successivo.
3. Un componente che invia una password dimenticata all’indirizzo email registrato dall’utente.
PHP e MySQL possono essere utilizzati per creare facilmente un sistema di accesso del genere.
====================================================
Componente 1 – Registrazione
Il primo componente viene generalmente implementato con un modulo HTML contenente 3 campi e 2 pulsanti:
1. Un campo per l’ID di accesso preferito
2. Un campo per la password preferita
3. Un campo per un indirizzo email valido
4. Un pulsante per l’invio
5. Un pulsante per il ripristino
Supponiamo che questo modulo sia codificato nel file register.html. L’esempio seguente rappresenta un tipico modulo HTML. Quando l’utente completa tutti i campi, la pagina register.php viene chiamata con un clic sul pulsante di invio.
<form name=”register” method=”post” action=”register.php”>
<input name=”loginid” type=”text” value=”ID di accesso” size=”20″/><br>
<input name=”password” type=”text” value=”password” size=”20″/><br>
<input name=”email” type=”text” value=”email” size=”50″/><br>
<input type=”submit” name=”submit” value=”invia”/>
<input type=”reset” name=”reset” value=”reset”/><br>
</form>
Il seguente estratto di codice potrebbe essere utilizzato come parte di register.php per elaborare la registrazione. Connette al database MySQL e inserisce una riga di dati nella tabella utilizzata per memorizzare le informazioni di registrazione.
<?php
$conn = new mysqli(“localhost”, “mysql_login”, “mysql_pwd”, “tbl_login”);
if ($conn->connect_error) {
die(“Connessione fallita: ” . $conn->connect_error);
}
$loginid = $_POST[‘loginid’];
$password = $_POST[‘password’];
$email = $_POST[’email’];
$sql = “INSERT INTO login_tbl (loginid, password, email) VALUES (‘$loginid’, ‘$password’, ‘$email’)”;
if ($conn->query($sql) === TRUE) {
echo “Registrazione avvenuta con successo”;
} else {
echo “Errore durante la registrazione: ” . $conn->error;
}
$conn->close();
?>
L’estratto di codice assume che la tabella MySQL utilizzata per archiviare i dati di registrazione sia chiamata tbl_login, con 3 campi: loginid, password ed email. I valori delle variabili $loginid, $password e $email vengono passati dal modulo register.html utilizzando il metodo post.
====================================================
Componente 2 – Verifica e autenticazione
Gli utenti registrati vorranno accedere al sistema per usufruire delle funzionalità offerte dal sito web. Dovranno fornire il loro ID di accesso e la password per consentire al sistema di verificare e autenticare l’utente.
Questo viene generalmente fatto tramite un modulo HTML che comprende 2 campi e 2 pulsanti:
1. Un campo per l’ID di accesso
2. Un campo per la password
3. Un pulsante per l’invio
4. Un pulsante per il ripristino
Supponiamo che questo modulo sia codificato nel file authenticate.html. L’esempio seguente rappresenta un tipico modulo HTML. Quando l’utente completa tutti i campi, la pagina authenticate.php viene chiamata con un clic sul pulsante di invio.
<form name=”authenticate” method=”post” action=”authenticate.php”>
<input name=”loginid” type=”text” value=”ID di accesso” size=”20″/><br>
<input name=”password” type=”text” value=”password” size=”20″/><br>
<input type=”submit” name=”submit” value=”invia”/>
<input type=”reset” name=”reset” value=”reset”/><br>
</form>
Il seguente estratto di codice potrebbe essere utilizzato come parte di authenticate.php per elaborare la richiesta di accesso. Connette al database MySQL e interroga la tabella utilizzata per memorizzare le informazioni di registrazione.
<?php
$conn = new mysqli(“localhost”, “mysql_login”, “mysql_pwd”, “tbl_login”);
if ($conn->connect_error) {
die(“Connessione fallita: ” . $conn->connect_error);
}
$loginid = $_POST[‘loginid’];
$password = $_POST[‘password’];
$sql = “SELECT loginid FROM login_tbl WHERE loginid=’$loginid’ AND password=’$password'”;
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo “Accesso al sistema effettuato con successo”;
// Esegui le funzionalità del sito web, ad esempio mostra informazioni all’utente
} else {
echo “ID di accesso o password non validi”;
}
$conn->close();
?>
Come nel componente 1, l’estratto di codice assume che la tabella MySQL utilizzata per archiviare i dati di registrazione sia chiamata tbl_login, con 3 campi: loginid, password ed email. I valori delle variabili $loginid e $password vengono passati dal modulo authenticate.html utilizzando il metodo post.
====================================================
Componente 3 – Password dimenticata
Un utente registrato potrebbe dimenticare la propria password per accedere al sistema del sito web. In questo caso, l’utente dovrà fornire il proprio ID di accesso affinché il sistema possa recuperare e inviare la password all’indirizzo email registrato.
Questo viene generalmente fatto tramite un modulo HTML che comprende 1 campo e 2 pulsanti:
1. Un campo per l’ID di accesso
2. Un pulsante per l’invio
3. Un pulsante per il ripristino
Supponiamo che questo modulo sia codificato nel file forgot.html. L’esempio seguente rappresenta un tipico modulo HTML. Quando l’utente completa tutti i campi, la pagina forgot.php viene chiamata con un clic sul pulsante di invio.
<form name=”forgot” method=”post” action=”forgot.php”>
<input name=”loginid” type=”text” value=”ID di accesso” size=”20″/><br>
<input type=”submit” name=”submit” value=”invia”/>
<input type=”reset” name=”reset” value=”reset”/><br>
</form>
Il seguente estratto di codice potrebbe essere utilizzato come parte di forgot.php per elaborare la richiesta di accesso. Connette al database MySQL e interroga la tabella utilizzata per memorizzare le informazioni di registrazione.
<?php
$conn = new mysqli(“localhost”, “mysql_login”, “mysql_pwd”, “tbl_login”);
if ($conn->connect_error) {
die(“Connessione fallita: ” . $conn->connect_error);
}
$loginid = $_POST[‘loginid’];
$sql = “SELECT password, email FROM login_tbl WHERE loginid=’$loginid'”;
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$password = $row[“password”];
$email = $row[“email”];
$subject = “La tua password”;
$header = “Da: [email protected]”;
$content = “La tua password è ” . $password;
mail($email, $subject, $content, $header);
echo “Ti è stata inviata un’email contenente la password”;
} else {
echo “ID di accesso non valido”;
}
$conn->close();
?>
Come nel componente 1, l’estratto di codice assume che la tabella MySQL utilizzata per archiviare i dati di registrazione sia chiamata tbl_login, con 3 campi: loginid, password ed email. Il valore della variabile $loginid viene passato dal modulo forgot.html utilizzando il metodo post.
====================================================
Conclusioni
L’esempio sopra illustra come creare un sistema di accesso molto semplice. L’esempio può essere migliorato includendo la crittografia della password e ulteriori funzionalità, come permettere agli utenti di modificare le proprie informazioni di accesso.