Hackathon PHP
Published: 2024-05-15 14:58:53

1/
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u49s3xjv7xis5ycz8fiy.png)  
connexion base de donnée
2/
<?php 
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style/style.css">
    <title>Register</title>
    <style>
        .error {
            color: red;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box form-box">
        <?php 
        include("php/config.php");

        // Variables pour stocker les messages d'erreur
        $usernameErr = $emailErr = $ageErr = $passwordErr = "";
        $username = $email = $age = $password = "";

        // Fonction de validation de l'email
        function validateEmail($email) {
            return filter_var($email, FILTER_VALIDATE_EMAIL);
        }

        // Fonction de validation du mot de passe (minimum 8 caractères)
        function validatePassword($password) {
            return strlen($password) >= 8;
        }

        // Fonction de validation de l'âge (doit être un nombre entre 0 et 120)
        function validateAge($age) {
            return is_numeric($age) && $age >= 0 && $age <= 120;
        }

        if(isset($_POST['submit'])){
            $username = htmlspecialchars($_POST['username']);
            $email = htmlspecialchars($_POST['email']);
            $age = htmlspecialchars($_POST['age']);
            $password = $_POST['password']; // Le mot de passe ne doit pas être échappé pour le hashage

            // Validation des entrées
            $isValid = true;
            if (empty($username)) {
                $usernameErr = "Ce champ est obligatoire";
                $isValid = false;
            }
            if (empty($email) || !validateEmail($email)) {
                $emailErr = empty($email) ? "Ce champ est obligatoire" : "Format d'email invalide";
                $isValid = false;
            }
            if (empty($age) || !validateAge($age)) {
                $ageErr = empty($age) ? "Ce champ est obligatoire" : "Âge invalide";
                $isValid = false;
            }
            if (empty($password) || !validatePassword($password)) {
                $passwordErr = empty($password) ? "Ce champ est obligatoire" : "Le mot de passe doit contenir au moins 8 caractères";
                $isValid = false;
            }

            if ($isValid) {
                // Vérification de l'email unique
                $verify_query = $pdo->prepare("SELECT Email FROM users WHERE Email = ?");
                $verify_query->execute([$email]);

                if($verify_query->rowCount() != 0 ){
                    echo "<div class='message'><p>This email is already used, please try another one!</p></div><br>";
                    echo "<a href='javascript:self.history.back()'><button class='btn'>Go Back</button>";
                } else {
                    // Hashage du mot de passe pour la sécurité
                    $hashed_password = password_hash($password, PASSWORD_BCRYPT);
                    $insert_query = $pdo->prepare("INSERT INTO users (Username, Email, Age, Password) VALUES (?, ?, ?, ?)");
                    $insert_query->execute([$username, $email, $age, $hashed_password]);

                    // Redirection vers la page de succès
                    header("Location: success.php");
                    exit;
                }
            }
        } 
        ?>

            <header>Sign Up</header>
            <form action="" method="post">
                <div class="field input">
                    <label for="username">Username</label>
                    <input type="text" name="username" id="username" autocomplete="off" value="<?= htmlspecialchars($username) ?>" required>
                    <span class="error"><?= $usernameErr ?></span>
                </div>
                <div class="field input">
                    <label for="email">Email</label>
                    <input type="text" name="email" id="email" autocomplete="off" value="<?= htmlspecialchars($email) ?>" required>
                    <span class="error"><?= $emailErr ?></span>
                </div>
                <div class="field input">
                    <label for="age">Age</label>
                    <input type="number" name="age" id="age" autocomplete="off" value="<?= htmlspecialchars($age) ?>" required>
                    <span class="error"><?= $ageErr ?></span>
                </div>
                <div class="field input">
                    <label for="password">Password</label>
                    <input type="password" name="password" id="password" autocomplete="off" required>
                    <span class="error"><?= $passwordErr ?></span>
                </div>
                <div class="field">
                    <input type="submit" class="btn" name="submit" value="Register">
                </div>
                <div class="links">
                    Already a member? <a href="index.php">Sign In</a>
                </div>
            </form>
        </div>
        <?php ?>
    </div>
</body>
</html>
Ce code PHP et HTML constitue une page d'inscription pour un site web. Voici ce qu'il fait :

- L'instruction `session_start();` initialise une session PHP pour stocker des informations utilisateur.
- La page HTML présente un formulaire d'inscription avec des champs pour le nom d'utilisateur, l'e-mail, l'âge et le mot de passe.
- Des fonctions de validation sont définies pour vérifier si l'e-mail est valide, si le mot de passe a au moins 8 caractères et si l'âge est un nombre valide.
- Lorsque le formulaire est soumis (avec le bouton "Register"), le code PHP vérifie les données entrées par l'utilisateur.
- S'il y a des erreurs de validation, des messages d'erreur appropriés sont affichés à côté des champs correspondants.
- Si les données sont valides, le code vérifie si l'e-mail est unique dans la base de données.
- Si l'e-mail est unique, le mot de passe est hashé pour des raisons de sécurité, puis les informations de l'utilisateur sont insérées dans la base de données.
- Enfin, l'utilisateur est redirigé vers une page de succès.

C'est un code complet pour créer un système d'inscription sécurisé et convivial pour les utilisateurs.
3/ 
<?php 
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style/style.css">
    <title>Login</title>
    <style>
        .error {
            color: red;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box form-box">
        <?php 
             
             include("php/config.php");

             // Variables pour stocker les messages d'erreur
             $emailErr = $passwordErr = $loginErr = "";
             $email = $password = "";

             // Fonction de validation de l'email
             function validateEmail($email) {
                 return filter_var($email, FILTER_VALIDATE_EMAIL);
             }

             // Fonction de validation du mot de passe (minimum 8 caractères)
             function validatePassword($password) {
                 return strlen($password) >= 8;
             }

             if(isset($_POST['submit'])){
               $email = htmlspecialchars($_POST['email']);
               $password = $_POST['password']; // Le mot de passe ne doit pas être échappé pour la vérification

               // Validation des entrées
               $isValid = true;
               if (!validateEmail($email)) {
                   $emailErr = "Format d'email invalide";
                   $isValid = false;
               }
               if (!validatePassword($password)) {
                   $passwordErr = "Le mot de passe doit contenir au moins 8 caractères";
                   $isValid = false;
               }

               if ($isValid) {
                   // Si les validations sont correctes, vérifier les informations d'identification
                   $query = $pdo->prepare("SELECT * FROM users WHERE Email = ?");
                   $query->execute([$email]);
                   $row = $query->fetch(PDO::FETCH_ASSOC);

                   if($row && password_verify($password, $row['Password'])){
                       $_SESSION['valid'] = $row['Email'];
                       $_SESSION['username'] = $row['Username'];
                       $_SESSION['age'] = $row['Age'];
                       $_SESSION['id'] = $row['Id'];

                       header("Location: home.php");
                       exit; // Arrêter l'exécution du script après la redirection
                   } else {
                       $loginErr = "Email ou mot de passe incorrect";
                   }
               }
             }
           ?>
            <header>Login</header>
            <form action="" method="post">
                <div class="field input">
                    <label for="email">Email</label>
                    <input type="text" name="email" id="email" value="<?= htmlspecialchars($email) ?>" >
                    <span class="error"><?= $emailErr ?></span>
                </div>
                <div class="field input">
                    <label for="password">Password</label>
                    <input type="password" name="password" id="password" >
                    <span class="error"><?= $passwordErr ?></span>
                </div>
                <div class="field">
                    <input type="submit" class="btn" name="submit" value="Login">
                </div>
                <div class="error"><?= $loginErr ?></div>
                <div class="links">
                    Don't have an account? <a href="register.php">Sign Up Now</a>
                </div>
            </form>
        </div>
    </div>
</body>
</html>

Ce code PHP et HTML constitue une page de connexion pour un site web. Voici un résumé :

- L'instruction `session_start();` initialise une session PHP pour stocker des informations utilisateur.
- La page HTML présente un formulaire de connexion avec des champs pour l'e-mail et le mot de passe.
- Des fonctions de validation sont définies pour vérifier si l'e-mail est valide et si le mot de passe a au moins 8 caractères.
- Lorsque le formulaire est soumis (avec le bouton "Login"), le code PHP vérifie les données entrées par l'utilisateur.
- S'il y a des erreurs de validation, des messages d'erreur appropriés sont affichés à côté des champs correspondants.
- Si les données sont valides, le code interroge la base de données pour trouver l'utilisateur correspondant à l'e-mail entré.
- Si un utilisateur correspondant est trouvé et si le mot de passe correspond, les informations de l'utilisateur sont stockées dans la session et l'utilisateur est redirigé vers la page d'accueil.
- Sinon, un message d'erreur est affiché pour informer l'utilisateur que l'e-mail ou le mot de passe est incorrect.
- En bas du formulaire, un lien est fourni pour rediriger les utilisateurs vers la page d'inscription s'ils n'ont pas encore de compte.

C'est un code complet pour créer un système de connexion sécurisé et convivial pour les utilisateurs.


4/
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style/style.css">
    <title>Registration Successful</title>
</head>
<body>
    <div class="container">
        <div class="box form-box">
            <div class="message">
                <p>Registration successful!</p>
            </div><br>
            <a href="index.php"><button class="btn">Login Now</button></a>
        </div>
    </div>
</body>
</html>

Ce code PHP et HTML constitue une page de connexion pour un site web. Voici un résumé :
- La fonction `session_start();` initialise une session PHP pour stocker des informations utilisateur, ce qui permet de maintenir la connexion de l'utilisateur entre différentes pages du site.
- La page HTML présente un formulaire de connexion avec des champs pour l'e-mail et le mot de passe, permettant aux utilisateurs de saisir leurs identifiants.
- Des fonctions de validation sont définies pour vérifier si l'e-mail est au bon format et si le mot de passe a au moins 8 caractères. Cela garantit que les données entrées par l'utilisateur sont correctes et sécurisées.
- Lorsque le formulaire est soumis en cliquant sur le bouton "Login", le code PHP vérifie les données saisies par l'utilisateur.
- Si des erreurs de validation surviennent, des messages d'erreur appropriés sont affichés à côté des champs correspondants, aidant ainsi l'utilisateur à corriger ses erreurs.
- Si les données sont valides, le code interroge la base de données pour trouver l'utilisateur correspondant à l'e-mail entré.
- Si un utilisateur correspondant est trouvé et si le mot de passe correspond également, les informations de l'utilisateur sont stockées dans la session, ce qui signifie qu'il est authentifié et peut accéder aux pages protégées.
- Sinon, si l'e-mail ou le mot de passe est incorrect, un message d'erreur est affiché pour informer l'utilisateur.
- En bas du formulaire, un lien est fourni pour rediriger les utilisateurs vers la page d'inscription s'ils n'ont pas encore de compte, les encourageant ainsi à s'inscrire s'ils ne sont pas déjà membres.

En résumé, ce code offre un système de connexion sécurisé et convivial pour les utilisateurs, avec des fonctionnalités de validation des données et des messages d'erreur explicites en cas de problème.
5/ <?php
      session_start();
      session_destroy();
      header("Location: ../index.php");
?>
logout 
6/
 <?php 
session_start();
include("php/config.php");
if(!isset($_SESSION['valid'])){
    header("Location: index.php");
    exit; // Arrêter l'exécution du script après la redirection
}
$id = $_SESSION['id'];
$query = $pdo->prepare("SELECT * FROM users WHERE Id = ?");
$query->execute([$id]);
$result = $query->fetch(PDO::FETCH_ASSOC);

$res_Uname = $result['Username'];
$res_Email = $result['Email'];
$res_Age = $result['Age'];
$res_id = $result['Id'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style/style.css">
    <title>Home</title>
</head>
<body>
    <div class="nav">
        <div class="logo">
            <p><a href="home.php"> Logo</a></p>
        </div>
        <div class="right-links">
            <a href="php/logout.php"><button class="btn">Log Out</button></a>
        </div>
    </div>
    <main>
        <div class="main-box top">
            <div class="top">
                <div class="box">
                    <p>Hello <b><?php echo $res_Uname ?></b>, Welcome</p>
                </div>
                <div class="box">
                    <p>Your email is <b><?php echo $res_Email ?></b>.</p>
                </div>
            </div>
            <div class="bottom">
                <div class="box">
                    <p>And you are <b><?php echo $res_Age ?> years old</b>.</p>
                </div>
            </div>
        </div>
    </main>
</body>
</html>
Ce code PHP et HTML constitue une page d'accueil sécurisée pour un site web. Voici un résumé de son fonctionnement :

- La fonction `session_start();` initialise une session PHP, ce qui permet de stocker des informations utilisateur et de maintenir leur connexion entre différentes pages du site.
- Le code inclut un fichier de configuration qui probablement contient les détails de connexion à la base de données.
- Il vérifie si l'utilisateur est authentifié en vérifiant s'il a une session valide. Si l'utilisateur n'est pas authentifié, il est redirigé vers la page d'index (probablement la page de connexion) et le script s'arrête.
- Une fois l'utilisateur authentifié, le script récupère les informations de l'utilisateur à partir de la base de données en utilisant son ID stocké dans la session.
- Les informations de l'utilisateur (nom d'utilisateur, e-mail et âge) sont récupérées et stockées dans des variables.
- Ces informations sont ensuite affichées dans la page HTML, souhaitant la bienvenue à l'utilisateur et affichant son nom d'utilisateur, son e-mail et son âge.

En résumé, ce code assure que seuls les utilisateurs authentifiés peuvent accéder à la page d'accueil, et il affiche des informations personnalisées une fois qu'ils sont connectés.
7/ 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style/style.css">
    <title>Registration Successful</title>
</head>
<body>
    <div class="container">
        <div class="box form-box">
            <div class="message">
                <p>Registration successful!</p>
            </div><br>
            <a href="index.php"><button class="btn">Login Now</button></a>
        </div>
    </div>
</body>
</html>
Ce code HTML représente une page de confirmation d'inscription réussie pour un site web. Voici un résumé de son contenu :
- La page est structurée en HTML5 avec des balises standard pour définir le contenu et le style.
- Elle affiche un message de confirmation indiquant que l'inscription a été réalisée avec succès.
- Un bouton "Login Now" est fourni, permettant à l'utilisateur de se connecter immédiatement après son inscription.
- Le lien du bouton dirige l'utilisateur vers la page de connexion (index.php) où il peut saisir ses identifiants nouvellement créés.

En résumé, cette page informe l'utilisateur que son inscription a été traitée avec succès et lui propose une option pour se connecter immédiatement à son compte nouvellement créé.