/*---------------------------------------------------------------*/
|
/*
|
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]);
|
|
}
|
|
| ?> |