5E SIA: Script di registrazione e login in PHP e MySQLi con convalida

Script di registrazione e login in PHP e MySQLi con convalida

In questo tutorial spiegheremo come creare script di registrazione e login avanzati in PHP con MySQLi. Questo è un requisito di base di ogni applicazione Web, consente all'utente di registrarsi sul sito Web e accedere all'area protetta per gli utenti che hanno effettuato l'accesso. Abbiamo creato questo script in modo procedurale, quindi è facile da implementare con la tua applicazione web.

In questo script abbiamo anche usato la convalida dell'input del modulo come lunghezza della password, convalida dell'email, convalida del campo di input ecc. In questo script stiamo usando la versione di PHP 7.

Passaggi per creare script di registrazione e login in PHP e MySQLi
1) Crea tabella Database con cinque colonne: id, nome utente, email, password, register_date
2) Crea connessione database usando PHP MySQLi
3) Crea modulo di registrazione
4) Crea campo di input modulo Convalida jQuery
5) Scrivi istruzioni MySQLi preparate per inserire dati utente
6 ) Crea modulo di accesso
7) Autentica l'utente
8) Crea pagina indice
9) Crea pagina di logout

Iniziamo a imparare seguendo i passaggi sopra menzionati:

1) Crea tabella database
Innanzitutto creare una tabella di database utilizzando la query MySQL sottostante. Questo creerà una tabella di database a 5 colonne, renderà la colonna 'id' come chiave primaria.

CREATE TABLE `register_users` (
  `id` int(11) NOT NULL,
  `username` varchar(50) NOT NULL,
  `email` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `register_date` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2) Creare una connessione al database usando MySQLi PHP
Ora scrivi uno script PHP per stabilire una connessione al database usando MySQLi. Crea un file database.php e menziona l'accesso alla configurazione del database. Utilizzare il codice seguente per creare una connessione al database.

database.php

<?php

/* database configuration */

$servername = 'localhost';
$username = 'USERNAME';
$password = 'PASSWORD';
$db = 'DATABASE NAME';

$conn = mysqli_connect($servername,$username,$password,$db) ;

if (!$conn)
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

?>

3) Crea modulo di registrazione
Crea una pagina register.php e crea un modulo HTML per accettare input come Username, Email, Password. Stiamo utilizzando il modulo HTML Bootstrap, includi solo il link CSS e JS bootstrap in esso. Non è necessario creare il proprio CSS. Controlla sotto il codice:

register.php 

<!DOCTYPE html>
<html lang="en">
<head>
  <title>User Registeration Form</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
   
</head>

<body>

<div style="margin-top:5%" class="container">
 
    <div class="col-sm-4">
    </div>
   
  <div class="row">
   
    <div class="col-sm-4" style="background:#eeeeee;">
      <h2>Register form</h2>
  <form id="formID" action="" method="POST">
    <div class="form-group">
      <label>Username:</label>
     
        <input type="text" class="form-control" id="username" placeholder="Enter Username" name="username">
     
    </div>
    <div class="form-group">
      <label>Email:</label>
             
        <input type="email" name="email" placeholder="Enter Email" id="email" class="form-control">
     
    </div>
    <div class="form-group">
      <label>Password:</label>
               
        <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd">
   
    </div>
    <div class="form-group">
      <label>Confirm Password:</label>
           
        <input type="password" class="form-control" id="cnfpwd" placeholder="Confirm password" name="confirmpwd">
     
    </div>
    <div class="form-group">       
     
        <input type="submit" name="register" id="register" value="Register" class="btn btn-default" style="margin-left: 40%;"/>
   
    </div>
  </form>
  <p>Click here to <a href='login.php'>Login</a></p>
</div>
</div>
</div>

</body>
</html>

Modulo di registrazione utenti


4) Crea campo di input modulo Convalida jQuery
Abbiamo messo molte convalide in questo modulo di registrazione. Come verificare che i campi di input siano vuoti o meno, verificare la validità dell'email e della password.

Per controllare l'e-mail valida stiamo usando il metodo di sanificazione e validazione di PHP . Dopo aver inviato il modulo, rimuovere tutti i caratteri illegali da esso e controllare che l'e-mail sia valida o meno:

// Remove all illegal characters from email

$email = filter_var($submitemail, FILTER_SANITIZE_EMAIL);

// Validate e-mail address
   
   if(filter_var($submitemail, FILTER_VALIDATE_EMAIL))
{
echo 'email is valid';
}

Per altre convalide stiamo usando jQuery, controlla sotto il codice dello script che esegue tutte le convalide. Inserisci questo codice di script nella pagina register.php nella sezione Head.

<script>

$(document).ready(function()
{
$("#register").click(function()
{
var name = $("#username").val();
var email = $("#email").val();
var password = $("#pwd").val();
var cpassword = $("#cnfpwd").val();
if (name == '' || email == '' || password == '' || cpassword == '')
{
alert("Please fill all fields...!!!!!!");
$('#formID').attr('onSubmit','return false');
}
else if ((password.length) < 8)
{
alert("Password should atleast 8 character in length...!!!!!!");
$('#formID').attr('onSubmit','return false');
}
else if (!(password).match(cpassword))
{
alert("Your passwords don't match. Try again?");
$('#formID').attr('onSubmit','return false');
}
else {
$('#formID').attr('onSubmit','return true');
}
});
});

</script>

In questo script convalidare i campi sull'invio del modulo. Per interrompere l'invio del modulo dopo il messaggio di avviso, restituire un valore falso sull'invio del modulo tramite il relativo attributo:

$ ('# formID'). attr ('onSubmit', 'return false');

5) Scrivi dichiarazioni preparate da MySQLi per inserire i dati dell'utente
Ora scrivi le query MySQLi per inserire i dati del modulo di registro nella tabella del database. Stiamo usando dichiarazioni preparate da MySQLi per inserire dati. Le dichiarazioni preparate sono molto utili contro le iniezioni di SQL. In questo modo è possibile applicare ripetutamente la stessa iniezione SQL ad alta frequenza.

In questo processo, prima scriviamo la query di inserimento in questo modo:

$ stmt = $ conn-> prepar ((INSERT INTO register_users (nome utente, email, password, register_date) VALUES (?,?,?,?) ”);

Quindi associare il parametro di input con questo comando di iniezione SQL.

$ stmt-> bind_param (“ssss”, $ username, $ email, $ password, $ register_date);

In questo 'ssss' descrivere i dati di input è stringa. I primi descrivono che username è valore stringa. Per il valore intero utilizziamo il valore 'i'.

Ora per eseguire questa query MySQLi usa il comando seguente:

$ stmt-> execute ();
$ stmt-> close ();

Per inserire i dati del modulo di registrazione nel database, utilizzare sotto il codice PHP:

<?php

if (isset($_POST['username']))
{
$statement = $conn->prepare("Select * from register_users where username = ? OR email = ?");
    $statement->bind_param("ss", $username, $email);
     
$stmt = $conn->prepare("INSERT INTO register_users (username, email, password, register_date) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $username, $email, $password, $register_date);

// set parameters and execute
$username = $_POST['username'];
$submitemail = $_POST['email'];

// Remove all illegal characters from email
$email = filter_var($submitemail, FILTER_SANITIZE_EMAIL);

$password = md5($_POST['pwd']);
$register_date = date("Y-m-d H:i:s");

// execute Select query

$statement->execute();

$statement->store_result();
$numrows = $statement->num_rows;

$statement->close();

// Validate e-mail address
if(filter_var($submitemail, FILTER_VALIDATE_EMAIL))
{
if($numrows == 0)
{
$stmt->execute();
$stmt->close();
}
else
{
$checkuser = "Username Or Email Already Used";
}
}
else
{
$validate_msg = "$submitemail is Not valid email address";
}

        if($conn->insert_id)
        {
            $msg = "<h3>Registered successfully.</h3>";
        }
        else
        {
$msg = "Registration Failed";
}
     
    }

?>

Per visualizzare il messaggio di errore, stiamo usando le variabili $ msg, $ checkuser e $ validate_msg. Per visualizzare questi messaggi basta inserire il modulo HTML tramite tag PHP:

<?php echo $validate_msg; echo $checkuser; echo "<br/>"; echo $msg; ?>

6) Crea modulo di accesso
Ora crea una pagina login.php per il modulo di login. Utilizzare il codice seguente per eseguire il processo di accesso:

login.php

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Login Form</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>

<?php

if (isset($_POST['username'])){

$username = $_POST['username'];

$password = md5($_POST['pwd']);
       
$stmt = $conn->prepare("SELECT username, password FROM register_users where username='$username' and password = '$password'");

    /* execute statement */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($user, $pass);

    /* fetch values */
    while ($stmt->fetch())
    {

    }

if($user == $username)
{
session_start();
   $_SESSION['name'] = $user;
// Redirect user to index.php
   header("Location: index.php");
}
else
{
  $msg = "Your username or password is wrong";
}


$stmt->close();
     
    }

?>

<body>

<div style="margin-top:5%" class="container">
 
    <div class="col-sm-4">
    </div>
   
  <div class="row">
   
    <div class="col-sm-4" style="background:#eeeeee;">
<?php echo $msg; ?>
      <h2>Login form</h2>
  <form action="" method="POST">
    <div class="form-group">
      <label>Username:</label>
     
        <input type="text" class="form-control" id="username" placeholder="Enter Username" name="username">
     
    </div>
   
    <div class="form-group">
      <label>Password:</label>
               
        <input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pwd">
   
    </div>
   
    <div class="form-group">       
     
        <button style="margin-left: 40%;" type="submit" class="btn btn-default">Login</button>
   
    </div>
  </form>
  <p>Click here to <a href='register.php'>Register</a></p>
</div>
</div>
</div>

</body>
</html>

Modulo form di accesso


7) Autenticare l'utente
Crea una pagina session.php per controllare la sessione dell'utente. Includi questo file PHP nella pagina richiesta per verificare che l'utente abbia accesso per visualizzarlo o meno.

In questo stiamo verificando che "$ _SESSION ['name']" sia vuoto o meno. Se la sessione è vuota, reindirizzare l'utente alla pagina di accesso.

session.php

<?php

session_start();

if(!isset($_SESSION['name']))
{
header("Location: login.php");
exit();
}

?>

8) Crea pagina index.php
Ora crea un index.php come pagina sicura. Dopo aver effettuato l'accesso, l'utente può visualizzare questa pagina. Controlla sotto il codice per creare questo:

index.php

<?php

require("session.php");

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Home Page</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>

<body>

<div style="margin-top:5%" class="container">
   
  <div align="center" class="row">
   
    <div class="col-sm-12" style="background:#eeeeee;">

<p>Welcome <?php echo $_SESSION['name']; ?>!</p>
<p>This is secure area.</p>
<a href="logout.php">Logout</a>
</div>
</div>
</div>
</body>
</html>

9) Crea pagina di disconnessione
Crea un file logout.php per distruggere la sessione dell'utente. Rimuoverà la sessione dell'utente corrente e reindirizzerà alla pagina di accesso. Abbiamo inserito questo link alla pagina di logout nella pagina index.php.

logout.php

<?php

session_start();
// Destroying All Sessions
if(session_destroy())
{
// Redirecting To Home Page
header("Location: login.php");
}

?>

Tutto fatto. Utilizzando i passaggi sopra menzionati puoi facilmente creare script di registrazione e login in PHP e MySQLi con Validation. Speriamo che questo tutorial ti aiuti a creare questa funzionalità. 


Esempio: https://www.codefixup.com/demo/registration-login-php-script/register.php

Fonte articolo: https://www.codefixup.com/registration-and-login-php-script/

Commenti