Crea un sistema di accesso utilizzando PHP, MySQL e HTML

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


  1. Requisiti
  2. Sistema di Registrazione
  3. Sistema di Login
  4. Pagina di Benvenuto
  5. 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.

HTML

 

<!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.

Sign Up

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.

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.

PHP

 

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.

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.

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.

Already have an account? Login here.

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

HTML

 

<!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

Login

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.

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.

Don't have an account? Register here.

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.

PHP

 







Welcome <?php echo $_SESSION["name"]; ?>



Hello, . Welcome to demo site.

Log Out

5) Lo Script di Logout

Infine, creiamo un file logout.php con il seguente codice.

PHP

 

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