Come creare un sistema di accesso PHP per il tuo sito web
Stai cercando di integrare un sistema di login in PHP? In questo articolo, ti mostro come eseguire un flusso di accesso di base in PHP. Creeremo un modulo di accesso, convalideremo le credenziali e reindirizzeremo l’utente sulla pagina dell’account. Aggiungerei anche un codice per disconnettere l’utente. Inoltre, verranno visualizzati i messaggi di errore se vengono inserite le credenziali errate.
Per il tutorial, presumo che tu stia usando l’hash ‘md5’ per memorizzare la password. Scriverei il codice considerando l’hash md5 di una stringa. Forse stai usando un altro algoritmo. In tal caso, devi modificare la query secondo il tuo algoritmo.
Per integrare il flusso di accesso, abbiamo bisogno di una tabella di database che memorizzi i dettagli dell’utente. In base a questa tabella, convalidiamo se l’utente ha inserito o meno le credenziali corrette. Se le credenziali dell’utente sono corrette, solo loro dovrebbero avere accesso alle pagine protette.
Nel mio caso, ho creato una tabella "utenti" e aggiunto alcune voci fittizie. Ho anche aggiunto una colonna "stato" che verrà utilizzata per scoprire se un account è attivo o meno. Questa colonna ha il tipo di dati ENUM con i valori 0 e 1.
- 1: l’account è attivo
- 0: l’account non è attivo
Crea un modulo di accesso
Per iniziare, creiamo un modulo di accesso in cui gli utenti possono inserire le proprie credenziali. Sto usando un framework Bootstrap per creare un modulo di accesso. Il mio index.php
file contiene il codice seguente.
<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6">
<h3>Login Form</h3>
<?php if(!empty($error_message)) { ?>
<div class="alert alert-danger"><?php echo $error_message; ?></div>
<?php } ?>
<form method="post">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" required />
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password" required />
</div>
<button type="submit" name="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>
Il codice sopra mostrerà il modulo di accesso come mostrato nello screenshot qui sotto.
Ho aggiunto la variabile $error_message
nel codice che stamperà gli errori di accesso.
Codice PHP per convalidare le credenziali degli utenti
Sei pronto con il modulo di accesso e la tabella del database. Successivamente, all’invio di un modulo, dobbiamo scrivere il codice PHP che verifica le credenziali dell’utente rispetto ai record del database. Se i dettagli sono corretti, accedi all’utente nel sistema e reindirizza alla myaccount.php
pagina.
Crea un config.php
file e aggiungi un codice per la connessione al database.
<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if ($conn->connect_errno) {
echo "Error: ". $conn->connect_error;
}
?>
Sostituisci i segnaposto con i valori effettivi.
Ora, nel index.php
file prima dell’inizio del tag html aggiungi il codice seguente.
<?php
session_start();
require_once('config.php');
//if user is logged in redirect to myaccount page
if (isset($_SESSION['id'])) {
header('Location: myaccount.php');
}
$error_message = '';
if (isset($_POST['submit'])) {
extract($_POST);
if (!empty($email) && !empty($password)) {
$sql = "SELECT id, status FROM users WHERE email = '".$conn->real_escape_string($email)."' AND password = '".md5($conn->real_escape_string($password))."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if($row['status']) {
$_SESSION['id'] = $row['id'];
header('Location: myaccount.php');
} else {
$error_message = 'Your account is not active yet.';
}
} else {
$error_message = 'Incorrect email or password.';
}
} else {
$error_message = 'Please enter email and password.';
}
}
?>
Qui nel codice, durante il controllo della password ho utilizzato il metodo PHP md5 assumendo che tu abbia memorizzato la password utilizzando questo algoritmo.
Codice di disconnessione
La parte successiva è l’aggiunta del codice per disconnettere l’utente. Per questo, crea myaccount.php
file. Un’altra cosa necessaria per gestire che solo gli utenti registrati dovrebbero accedere a questa pagina.
mioaccount.php
<?php
session_start();
if (isset($_GET['action']) && ('logout' == $_GET['action'])) {
unset($_SESSION['id']);
}
if (isset($_SESSION['id'])) {
?>
<h3>Welcome User! <a href="?action=logout">Logout</a></h3>
<?php
} else { //redirect to login page
header('Location: index.php');
}
?>
Utilizzando la sessione PHP stiamo cercando di capire se dare accesso a questa pagina o meno. Se la sessione non è impostata, reindirizza l’utente alla pagina di accesso.
Spero che tu capisca le basi della creazione di un sistema di accesso in PHP. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Sistema di registrazione e accesso utente in Laravel
- Accedi a Google in Laravel utilizzando Laravel Socialite
- Come creare un sistema di registrazione PHP