Informazioni

  • Copyright © 2021 Gabriele Romanato
  • Codice fiscale: RMNGRL78L20A485X
  • Privacy Policy

PHP: login con i cookie

In questo tutorial vedremo come implementare un sistema di login con i cookie in PHP.

La regola di base da seguire è che il cookie non dovrà mai contenere informazioni sensibili riguardanti un account utente.

Stabilito questo, la prima cosa da implementare sarà l'elaborazione del form di login. Se un utente esiste nel database con le credenziali corrette, verrà creato il cookie e l'utente verrà reindirizzato sulla sua bacheca. In caso contrario verrà reindirizzato sulla pagina di errore con una query string che mostrerà un messaggio di errore.

<?php
require_once 'lib/config.php';
require_once 'lib/connection.php';

global $db_connection;

$username = trim($_POST['username']);
$password = trim($_POST['password']);
$enc_pwd = md5($password);

$query = "SELECT * FROM users WHERE username = '$username' AND password = '$enc_pwd'";
$result = $db_connection->query($query);

if($result->num_rows === 0) {
    $redirect = BASE_URL . '?error=1';
    header("Location: $redirect");
    exit;
}

$value = md5(str_shuffle(uniqid()));
setcookie('loggedin', $value, time() + 3600);
$redirect = BASE_URL . 'dashboard.php';
header("Location: $redirect");
exit;

La funzione setcookie imposta il cookie di login con una scadenza di 1 ora. Ricordiamo che PHP calcola i tempi in secondi e non in millesimi di secondi come JavaScript.

Nella dashboard dell'utente possiamo verificare la presenza del cookie chiamato loggedin usando l'array globale $_COOKIE:

if(!isset($_COOKIE['loggedin'])) {
    $redirect = BASE_URL;
    header("Location: $redirect");
    exit;
}

Per effettuare il logout dobbiamo cancellare il cookie. Possiamo semplicemente invalidare il cookie impostando una data di scandenza nel passato.

if(isset($_COOKIE['loggedin'])) {
    unset($_COOKIE['loggedin']);
    setcookie('loggedin', '', time() - 3600);
}
$redirect = BASE_URL;
header("Location: $redirect");
exit;

I cookie non sono consigliati per gestire la permanenza dei dati relativi all'autenticazione. Si raccomanda invece l'uso delle sessioni.

Precedente PHP: validazione dei form con AJAX PHP: validazione dei form con AJAX
Laravel: generare file PDF con mPDF Successivo Laravel: generare file PDF con mPDF