``

Salut à tous !

Aujourd'hui, je vous montre comment j'ai développé un système de connexion/inscription sécurisé en PHP avec Bootstrap pour le design, et MySQL pour la base de données.

Le projet utilise aussi quelques animations pour rendre l'expérience plus fluide ✨.

Technologies utilisées

  • PHP (backend)
  • MySQL (base de données)
  • Bootstrap 5 (frontend)
  • HTML5 & CSS3
  • Un peu de JavaScript pour améliorer l'UX

Arborescence du projet

`
/assets
bootstrap.css
bootstrap.js
style1.css
images/joyboy1.jpeg
joyBoy_video.mp4
/includes
config.php
/pages
login.php
signUp.php
profile.php
README.md
`

1. Inscription (signUp.php)

Lors de l'inscription :

  • Validation du nom, email et mot de passe.
  • Vérification de la force du mot de passe.
  • Hashage du mot de passe avec password_hash().
  • Enregistrement dans la base de données si tout est valide.

Code pour l'inscription :

php

// Validation mot de passe :

function isValidPassword($password) {
return strlen($password) >= 8 &&
preg_match("/[A-Z]/", $password) &&
preg_match("/[a-z]/", $password) &&
preg_match("/[0-9]/", $password) &&
preg_match("/[\W]/", $password);
}

Inscription :

if ($_SERVER["REQUEST_METHOD"] === "POST") {
// Sanitize inputs
$fullName = htmlspecialchars(trim($_POST['fullname']));
$email = htmlspecialchars(trim($_POST['email']));
$password = htmlspecialchars(trim($_POST['password']));
$confirm_password = htmlspecialchars(trim($_POST["confirm_password"]));

Si tout est ok :

if ($password === $confirm_password) {
    $hashedPassword = password_hash($password, PASSWORD_DEFAULT);
    $stmt = $pdo->prepare("INSERT INTO users (fullName, email, password) VALUES (?, ?, ?)");
    $stmt->execute([$fullName, $email, $hashedPassword]);
    $_SESSION["signup"] = "Your account has been created successfully.";
    header("Location: login.php");
    exit();
}

}

Vérification du domaine :

`$allowedDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com', 'icloud.com'];
  $emailParts = explode('@', $email);

  if (count($emailParts) !== 2 || !in_array(strtolower($emailParts[1]), $allowedDomains)) {
      $errorEmail = '*Only known email domains are accepted';

`

Aperçu de la page d'inscription

Image description

2. Connexion (login.php)

Lors de la connexion :
•Vérification de l'email et mot de passe.
•Si correct, stockage des informations de l'utilisateur en session.
•Redirection vers la page de profil.

Code pour la connexion :

if ($_SERVER["REQUEST_METHOD"] === "POST") {
$email = htmlspecialchars(trim($_POST['email']));
$password = htmlspecialchars(trim($_POST['password']));

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);
$user = $stmt->fetch();

if ($user && password_verify($password, $user['password'])) {
    session_regenerate_id(true);
    $_SESSION['email'] = $user['email'];
    $_SESSION['fullname'] = $user['fullName'];
    header("Location: profile.php");
    exit();
} else {
    $error = "Incorrect email or password.";
}

}

Aperçu de la page de connexion :

Image description

3. Profil utilisateur (profile.php) :

•Accessible uniquement si l'utilisateur est connecté (vérification session).
•Affiche le nom complet de l'utilisateur.
•Superbe design en mode dark avec animation de fond dégradé.

Code pour profil

if (!isset($_SESSION['email'])) {
$_SESSION['errorLog'] = "You must log in first.";
header("Location: login.php");
exit();
}

Aperçu de la page profil

Image description

Design visuel

•Thème couleurs : Rouge, Noir, Blanc.
•Bootstrap 5 + CSS custom pour les effets de survol et les transitions.
•Animations CSS : Slide in, Gradient moving background, Hover effects.
Exemple de code CSS

Résultat final

•Sécurisé (hash mot de passe + session sécurisée)
•Moderne (Bootstrap 5 et animations CSS)
•Fonctionnel (Inscription, Connexion, Profil, Déconnexion)
Le mot de la fin
Je suis très fier de ce projet, car il combine sécurité et design moderne !

N'hésitez pas à vous en inspirer pour vos propres projets web 🚀.
Si tu veux voir plus de contenus comme ça, n'hésite pas à ❤️ et commenter !

Tags

php #mysql #webdev #bootstrap #programming