Questo è un tutorial per creare un sistema di login con l’aiuto di PHP, MySQL e HTML. Il tuo sito web deve essere dinamico e i tuoi visitatori devono avere accesso immediato ad esso. Pertanto, vogliono accedere quante più volte possibile. Il sistema di autenticazione del login è molto comune per qualsiasi applicazione web. Consente agli utenti registrati di accedere al sito web e alle funzionalità riservate ai membri. È anche utile quando vogliamo memorizzare informazioni per gli utenti. Copre tutto, dai siti di shopping, ai siti educativi e ai siti di abbonamento, ecc.
Gestione e Sicurezza dei Sistemi Aziendali | Iscriviti al Corso Gratuito*
*Link affiliato. Vedi Termini di Utilizzo.
Questo tutorial è suddiviso in 5 parti.
Indice dei Contenuti
- Requisiti
- Sistema di Registrazione
- Sistema di Login
- Pagina di Benvenuto
- Script di Logout
1) Requisiti per Costruire un Sistema di Login in PHP
Per seguire con successo questo tutorial e costruire un sistema di login in PHP, devi avere e conoscere le seguenti cose:
- Un server che supporti PHP per eseguire il tuo codice
- Una conoscenza e familiarità con HTML e CSS
- Un database MySQL installato sul tuo dispositivo e la conoscenza di come utilizzarlo
- Capacità di aggiungere tutte le corrette misure di sicurezza al tuo sistema di login
Se hai tutti questi requisiti di base e set di conoscenze, allora sei pronto per procedere ai passaggi successivi per immergerti nella costruzione del tuo sistema di login in PHP.
2) Costruzione di un sistema di registrazione
In questa parte, creeremo un sistema di registrazione che consente agli utenti di creare un nuovo account nel sistema. Il nostro primo passo è creare un modulo di registrazione HTML. Il modulo è piuttosto semplice da creare. Chiede solo un nome, un’email, una password e la conferma della password. Gli indirizzi email saranno unici per ogni utente. Non sono consentiti più account per lo stesso indirizzo email. Mostrerà un messaggio di errore agli utenti che tentano di creare più account con lo stesso indirizzo email.
Passo 1: Creazione del modulo di registrazione in HTML
Creeremo un file PHP chiamato register.php con il seguente codice al suo interno. Si tratta di un semplice modulo HTML con alcune validazioni di base. Se non sei familiare con l’HTML, puoi trovarlo su molti siti online che forniscono modelli pronti per moduli di accesso html5.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Register</h2>
<p>Please fill this form to create an account.</p>
<form action="" method="post">
<div class="form-group">
<label>Full Name</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Already have an account? <a href="login.php">Login here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
L’output del modulo HTML sopra avrà questo aspetto.
Tutti i campi di input sono obbligatori aggiungendo l’attributo "required"
che è l’attributo HTML predefinito. L’uso di type="email"
convalida l’indirizzo email fornito dagli utenti e restituisce un errore se l’indirizzo email non è valido. Per il modulo di registrazione, abbiamo utilizzato Bootstrap per lo sviluppo rapido. Se desideri risparmiare tempo sul codice HTML, puoi sempre utilizzare alcuni modelli html5 gratuiti per il tuo progetto.
Passaggio 2: Creazione della tabella del database MySQL
Dovrai creare un nuovo database con un nome adatto. Dopodiché esegui la query SQL sottostante per creare la tabella degli utenti all’interno del tuo nuovo database MySQL.
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
Passaggio 3: Creazione del file di configurazione del database
Ora abbiamo creato la tabella utenti. Creiamo un nuovo file PHP chiamato config.php per connetterci al database MySQL. Incolla il seguente codice nel file config.php e cambia il nome del database in quello che preferisci quando crei il database.
Fase 4: Creazione di un file di sessione
Creiamo un file chiamato session.php. In questo file, inizieremo la sessione e verificheremo se un utente è già connesso; in caso affermativo, reindirizzeremo l’utente al file welcome.php.
Fase 5: Crea un modulo di registrazione in PHP
Infine, è tempo di creare un codice PHP che consenta agli utenti di registrare i propri account nel sistema. Questo codice PHP avviserà gli utenti con un errore se un utente è già registrato con lo stesso indirizzo email.
Sostituisci il seguente codice nel file register.php.
prepare("SELECT * FROM users WHERE email = ?")) {
$error = '';
// Associa i parametri (s = stringa, i = int, b = blob, ecc.), nel nostro caso il nome utente è una stringa, quindi usiamo "s"
$query->bind_param('s', $email);
$query->execute();
// Memorizza il risultato in modo da poter controllare se l'account esiste nel database.
$query->store_result();
if ($query->num_rows > 0) {
$error .= 'The email address is already registered!
';
} else {
// Convalida la password
if (strlen($password ) < 6) {
$error .= 'Password must have atleast 6 characters.
';
}
// Convalida la conferma della password
if (empty($confirm_password)) {
$error .= 'Please enter confirm password.
';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= 'Password did not match.
';
}
}
if (empty($error) ) {
$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
$result = $insertQuery->execute();
if ($result) {
$error .= 'Your registration was successful!
';
} else {
$error .= 'Something went wrong!
';
}
}
}
}
$query->close();
$insertQuery->close();
// Chiudi la connessione al DB
mysqli_close($db);
}
?>
Sign Up
Register
Please fill this form to create an account.
Una volta che l’utente clicca sul pulsante di invio, verrà verificato se $_SERVER["REQUEST_METHOD"] == "POST"
e se è stata impostata la variabile $_POST['submit']
. Per motivi di sicurezza, suggeriamo sempre di non memorizzare la password come testo normale nel database. Abbiamo utilizzato la funzione password_hash()
che crea un nuovo hash della password utilizzando un algoritmo di hash unidirezionale robusto.
Lo script PHP sopra convaliderà che nessun utente sia registrato con lo stesso indirizzo email e convaliderà anche la password. Dopo la convalida confermata, memorizziamo le informazioni fornite dall’utente nella tabella degli utenti e avvisiamo l’utente che la registrazione è avvenuta con successo.
3) Costruzione di un Sistema di Accesso
In questa parte, creeremo un modulo di accesso per consentire agli utenti di accedere all’area riservata del sistema. Nel nostro caso, l’area riservata è una pagina di benvenuto che tratteremo nella prossima parte.
Passo 1: Creazione di un Modulo di Accesso in HTML
Di seguito è riportato il Modulo di Accesso in HTML. Incollalo in un file chiamato login.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Login</h2>
<p>Please fill in your email and password.</p>
<form action="" method="post">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Don't have an account? <a href="register.php">Register here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
Il risultato del codice sopra sarà simile a questo
Passo 2: Creazione di un Sistema di Accesso in PHP
Dopo aver creato il modulo di accesso in HTML, scriveremo un codice per convalidare le credenziali di accesso. Al momento dell’invio del modulo, verificheremo che l’email e la password siano state inserite. Se sono state inserite, eseguiremo una query SELECT
per trovare il record in un database in base all’email e alla password. Se viene trovato un record, memorizzeremo il "userID"
in sessione e l’utente verrà reindirizzato al file welcome.php, altrimenti verrà mostrato un messaggio di errore all’utente.
Sostituiamo il seguente codice nel file login.php.
Please enter email.';
}
// convalida se la password è vuota
if (empty($password)) {
$error .= 'Please enter your password.
';
}
if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch();
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;
// Reindirizza l'utente alla pagina di benvenuto
header("location: welcome.php");
exit;
} else {
$error .= 'The password is not valid.
';
}
} else {
$error .= 'No User exist with that email address.
';
}
}
$query->close();
}
// Chiudi la connessione
mysqli_close($db);
}
?>
Login
Login
Please fill in your email and password.
4) Creazione di una Pagina di Benvenuto
Di seguito è riportato il codice per il file welcome.php. Gli utenti saranno reindirizzati a questa pagina dopo un processo di accesso riuscito. Abbiamo aggiunto del codice all’inizio della pagina per verificare se l’utente non è autenticato, in tal caso verrà reindirizzato alla pagina di accesso.
Creiamo un file welcome.php e incolliamo il seguente codice.
Welcome
Hello, . Welcome to demo site.
5) Lo Script di Logout
Infine, creiamo un file logout.php con il seguente codice.
Una volta che l’utente clicca sul link Esci, lo script soprastante verrà chiamato per distruggere la sessione e reindirizzare l’utente al file login.php.
Conclusion
In questo tutorial, ho spiegato come è possibile creare un sistema di accesso utilizzando HTML, PHP e MySQL. Una volta compreso quanto sia semplice creare un sistema di accesso, è possibile aggiungere altre funzionalità come reimpostare la password, password dimenticata, verificare l’indirizzo email, modificare il profilo dell’utente, ecc.
Source:
https://dzone.com/articles/create-a-login-system-using-php