-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaccount.php
More file actions
82 lines (73 loc) · 2.9 KB
/
account.php
File metadata and controls
82 lines (73 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
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
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/**
* Ce script permet aux utilisateurs de s'inscrire, se connecter, se déconnecter et supprimer leurs comptes.
* Il utilise PHP, MySQL et des requêtes préparées pour garantir la sécurité.
*/
// Démarre une session pour stocker les données utilisateur
session_start();
// Inclut le fichier de configuration de la base de données
require 'config.php';
// Vérifie si une demande d'inscription a été soumise
if (isset($_POST['register'])) {
// Obtiens le nom d'utilisateur et le mot de passe soumis
$username = $_POST['username'];
$password = $_POST['password'];
// Génère un sel aléatoire pour hacher le mot de passe
$salt = bin2hex(openssl_random_pseudo_bytes(32));
// Hache le mot de passe en utilisant le sel généré
$hashed_password = hash('sha256', $password . $salt);
// Prépare une requête SQL pour insérer le nouvel utilisateur dans la base de données
$stmt = $conn->prepare("INSERT INTO users (username, password, salt) VALUES (?, ?, ?)");
// Lie les paramètres à la requête
$stmt->bind_param("sss", $username, $hashed_password, $salt);
// Exécute la requête
$stmt->execute();
// Ferme la requête
$stmt->close();
}
// Vérifie si une demande de connexion a été soumise
if (isset($_POST['login'])) {
// Obtiens le nom d'utilisateur et le mot de passe soumis
$username = $_POST['username'];
$password = $_POST['password'];
// Prépare une requête SQL pour obtenir les données de l'utilisateur
$stmt = $conn->prepare("SELECT id, password, salt FROM users WHERE username = ?");
// Lie le paramètre à la requête
$stmt->bind_param("s", $username);
// Exécute la requête
$stmt->execute();
// Lie les variables de résultat à la requête
$stmt->bind_result($id, $hashed_password, $salt);
// Récupère les données de l'utilisateur
$stmt->fetch();
// Vérifie si le mot de passe soumis correspond au mot de passe haché stocké
if (hash('sha256', $password . $salt) == $hashed_password) {
// Définit l'ID utilisateur dans la session
$_SESSION['user_id'] = $id;
}
// Ferme la requête
$stmt->close();
}
// Vérifie si une demande de déconnexion a été soumise
if (isset($_POST['logout'])) {
// Détruit la session
session_destroy();
// Redirige vers la page d'index
header("Location: index.php");
}
// Vérifie si une demande de suppression a été soumise
if (isset($_POST['delete'])) {
// Prépare une requête SQL pour supprimer l'utilisateur de la base de données
$stmt = $conn->prepare("DELETE FROM users WHERE id = ?");
// Lie le paramètre à la requête
$stmt->bind_param("i", $_SESSION['user_id']);
// Exécute la requête
$stmt->execute();
// Ferme la requête
$stmt->close();
// Détruit la session
session_destroy();
// Redirige vers la page d'index
header("Location: index.php");
}
?>