Stock les cookies dans une base de données MySQL

  Information

Pratique pour sécuriser les cookies de vos utilisateurs, ainsi les cookies sont protégés et sauvegardés. Explications

  • Connexion PDO sécurisée : évite les injections SQL.
  • Création automatique de la table cookies_store si elle n’existe pas.
  • Génération d’un token sécurisé avec random_bytes().
  • Création du cookie avec options de sécurité (secure, httponly, samesite).
  • Insertion en base pour garder une trace côté serveur.
  • Lecture : si le cookie existe déjà, on ne le recrée pas.
  code source classé dans  Cookies

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
 41    
 42    
 43    
 44    
 45    
 46    
 47    
 48    
 49    
 50    
 51    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
                               
/*---------------------------------------------------------------*/
/*
Titre : Stock les cookies dans une base de données MySQL

URL : https://phpsources.net/code_s.php?id=1196
Date édition : 02 Mars 2026
Date mise a jour : 02 Mars 2026

Rapport de la maj:
- fonctionnement du code vérifié
*/
/*---------------------------------------------------------------*/

// --- CONFIGURATION DE LA BASE DE DONNÉES ---
$host = "localhost";
$dbname = "test_db";
$username = "root";
$password = "";

// --- CONNEXION SÉCURISÉE À MYSQL ---
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username,
$password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Erreur de connexion : " . $e->getMessage());
}

// --- CRÉATION DE LA TABLE SI ELLE N'EXISTE PAS ---
$pdo->exec("
CREATE TABLE IF NOT EXISTS cookies_store (
id INT AUTO_INCREMENT PRIMARY KEY,
cookie_name VARCHAR(255) NOT NULL,
cookie_value TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
");

// --- NOM ET VALEUR DU COOKIE ---
$cookieName = "user_token";
$cookieValue = bin2hex(random_bytes(16)); // Valeur sécurisée aléatoire
$cookieExpire = time() + (86400 * 7); // 7 jours

// --- CRÉATION DU COOKIE CÔTÉ CLIENT ---
if (!isset($_COOKIE[$cookieName])) {
// Doit être envoyé avant tout HTML
setcookie($cookieName, $cookieValue, [
'expires' => $cookieExpire,
'path' => '/',
'secure' => true, // HTTPS uniquement
'httponly' => true, // Non accessible en JS
'samesite' => 'Strict' // Protection CSRF
]);

// --- ENREGISTREMENT DANS LA BASE ---
$stmt = $pdo->prepare(
"INSERT INTO cookies_store (cookie_name, cookie_value) VALUES (:name, :value)");
$stmt->execute([
':name' => $cookieName,
':value' => $cookieValue
]);

echo "Cookie créé et stocké en base.";
} else {
echo "Cookie déjà présent : " . htmlspecialchars($_COOKIE[$cookieName]);

}

?>

      Fonctions du code - Doc officielle PHP

Détail    php.net  
Description
Versions PHP
   bin2hex
Convertit des données binaires en représentation hexadécimale
PHP 4, 5, 7 et 8
   die
Alias de la fonction exit
PHP 4, 5, 7 et 8
   echo
Affiche une chaîne de caractères
PHP 4, 5, 7 et 8
   htmlspecialchars
Convertit les caractères spéciaux en entités HTML
PHP 4, 5, 7 et 8
   isset
Détermine si une variable est déclarée et est différente de null
PHP 4, 5, 7 et 8
   random_bytes
Récupère des octets aléatoires cryptographiquement sécurisés
PHP 7 et 8
   setcookie
Envoie un cookie
PHP 4, 5, 7 et 8
   time
Retourne l'horodatage UNIX actuel
PHP 4, 5, 7 et 8

   Un petit merci aux éditeurs pour leur travail ne coûte rien et fait toujours plaisir wink

 Autres snippets qui pourraient vous intéresser

Stocker des tableaux dans des cookies

Compatibilité : PHP 5, PHP 7, PHP 8

Stocker des array dans des cookies: Voici 2 manières de procéder avec Serialize et JSON.

Insère un élément dans un tableau a une place donnée

Compatibilité : PHP 5, PHP 7, PHP 8

Insère un élément dans un tableau selon la clé. La fonction accepte les tableaux uniquement avec des clés numériques.

Liste et supprime en MySQLi les tables d'une base MySQL

Compatibilité : PHP 7, PHP 8

Liste toute les tables de votre base de données MySQL dans un tableau HTML. Affiche des liens à chaque table trouvée avec la possibilité de supprimer la table.

Liste et supprime les tables d'une base MySQL

Compatibilité : PHP 4, PHP 5

Permet de lister toute les tables de votre base de données MySQL et peut aussi supprimer une ou plusieurs tables via un lien.

Sauvegarde complète en MySQLi d'une base de données SQL

Compatibilité : PHP 7, PHP 8

Dump (sauvegarde) avec PHP d'une base de données MySQL - Cela inclus les tables et les enregistrements.

* Requêtes exécutées avec Recherche Contextuelle

  Les derniers scripts PHP / MySQL

GestAssoPhp 7.8.1

Script PHP / MySQL
Langue langue fr
Date  hier
Taille 0.55 Mo
Catégorie Membres

Piwigo 16.3.0

logo Piwigo
Langue langue fr
Date  hier
Taille 19 Mo
Catégorie Galeries

Mahara 22.10

logo Mahara
Langue langue nz
Date  hier
Taille 33 Mo
Catégorie Galeries

Moodle 5.1.1

Script PHP / MySQL
Langue langue fr
Date 28 Fév 2026
Taille 94 Mo
Catégorie CMS

Apache 2.4.66

logo Apache
Langue langue us
Date 27 Fév 2026
Taille 9 Mo
Catégorie Apache

DotClear 2.37

logo DotClear
Langue langue fr
Date 27 Fév 2026
Taille 6 Mo
Catégorie Blogs