Besoin d une correction pour la page d inscription

Fermé
53pierre Messages postés 32 Date d'inscription mercredi 10 mars 2021 Statut Membre Dernière intervention 29 janvier 2023 - 10 mars 2021 à 12:00
53pierre Messages postés 32 Date d'inscription mercredi 10 mars 2021 Statut Membre Dernière intervention 29 janvier 2023 - 10 mars 2021 à 22:50
bonjour
n'étant pas un spécialiste de php
j'essaye de me débrouiller

que pensez vous de ma page d'inscription
pouvez vous me dire ce que je dois modifier merci

<!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <meta name="author" content="NoS1gnal"/>

            <link href="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/magnific-popup.min.css" rel="stylesheet" />
            <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
            <title>Connexion</title>
        </head>
        <body>
        <div class="login-form">
            <?php 
                if(isset($_GET['reg_err']))
                {
                    $err = htmlspecialchars($_GET['reg_err']);

                    switch($err)
                    {
                        case 'success':
                        ?>
                            <div class="alert alert-success">
                                <strong>Succès</strong> inscription réussie !
                            </div>
                        <?php
                        break;

                        case 'password':
                        ?>
                            <div class="alert alert-danger">
                                <strong>Erreur</strong> mot de passe différent
                            </div>
                        <?php
                        break;

                        case 'email':
                        ?>
                            <div class="alert alert-danger">
                                <strong>Erreur</strong> email non valide
                            </div>
                        <?php
                        break;

                        case 'email_length':
                        ?>
                            <div class="alert alert-danger">
                                <strong>Erreur</strong> email trop long
                            </div>
                        <?php 
                        break;

                        case 'pseudo_length':
                        ?>
                            <div class="alert alert-danger">
                                <strong>Erreur</strong> pseudo trop long
                            </div>
                        <?php 
                        case 'already':
                        ?>
                            <div class="alert alert-danger">
                                <strong>Erreur</strong> compte deja existant
                            </div>
                        <?php 

                    }
                }
                ?>
            
            <form action="inscription_traitement.php" method="post">
                <h2 class="text-center">Inscription</h2>       
                <div class="form-group">
                    <input type="text" name="pseudo" class="form-control" placeholder="Pseudo" required="required" autocomplete="off">
                </div>
                <div class="form-group">
                    <input type="email" name="email" class="form-control" placeholder="Email" required="required" autocomplete="off">
                </div>
                <div class="form-group">
                    <input type="password" name="password" class="form-control" placeholder="Mot de passe" required="required" autocomplete="off">
                </div>
                <div class="form-group">
                    <input type="password" name="password_retype" class="form-control" placeholder="Re-tapez le mot de passe" required="required" autocomplete="off">
                </div>
                <div class="form-group">
                    <button type="submit" class="btn btn-primary btn-block">Inscription</button>
                </div>   
            </form>
        </div>
        <style>
            .login-form {
                width: 340px;
                margin: 50px auto;
            }
            .login-form form {
                margin-bottom: 15px;
                background: #f7f7f7;
                box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
                padding: 30px;
            }
            .login-form h2 {
                margin: 0 0 15px;
            }
            .form-control, .btn {
                min-height: 38px;
                border-radius: 2px;
            }
            .btn {        
                font-size: 15px;
                font-weight: bold;
            }
        </style>
        </body>
</html>







la page de traitement

<?php 
    require_once 'config.php';

    if(!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
    {
        $pseudo = htmlspecialchars($_POST['pseudo']);
        $email = htmlspecialchars($_POST['email']);
        $password = htmlspecialchars($_POST['password']);
        $password_retype = htmlspecialchars($_POST['password_retype']);

        $check = $bdd->prepare('SELECT pseudo, email, password FROM utilisateurs WHERE email = ?');
        $check->execute(array($email));
        $data = $check->fetch();
        $row = $check->rowCount();

        if($row == 0){ 
            if(strlen($pseudo) <= 100){
                if(strlen($email) <= 100){
                    if(filter_var($email, FILTER_VALIDATE_EMAIL)){
                        if($password == $password_retype){

                            $cost = ['cost' => 12];
                            $password = password_hash($password, PASSWORD_BCRYPT, $cost);
                            
                            $ip = $_SERVER['REMOTE_ADDR'];

                            $insert = $bdd->prepare('INSERT INTO utilisateurs(pseudo, email, password, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
                            $insert->execute(array(
                                'pseudo' => $pseudo,
                                'email' => $email,
                                'password' => $password,
                                'ip' => $ip,
                                'token' =>  bin2hex(openssl_random_pseudo_bytes(24))
                            ));
                            header('Location:inscription.php?reg_err=success');
                            die();
                        }else{ header('Location: inscription.php?reg_err=password'); die();}
                    }else{ header('Location: inscription.php?reg_err=email'); die();}
                }else{ header('Location: inscription.php?reg_err=email_length'); die();}
            }else{ header('Location: inscription.php?reg_err=pseudo_length'); die();}
        }else{ header('Location: inscription.php?reg_err=already'); die();}
    }
	
	
A voir également:

23 réponses

53pierre Messages postés 32 Date d'inscription mercredi 10 mars 2021 Statut Membre Dernière intervention 29 janvier 2023 1
10 mars 2021 à 22:18
mdrrrrrrrr

et que penses tu de cette vérification

if(!empty($_SESSION['id']) AND !empty($_SESSION['pseudo']) OR !empty($_COOKIE['passe']) AND !empty($_COOKIE['pseudo']))
0
jordane45 Messages postés 38369 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 janvier 2025 4 721
Modifié le 10 mars 2021 à 22:29
Il manque des parenthèses entre les deux conditions separées par le or.
Mais de toute façon pourquoi te poser des questions vu que tu n'utilise pas les cookies ?
Les utiliser d'ailleurs, ouvrir est une faille de sécurité à ton site...
0
53pierre Messages postés 32 Date d'inscription mercredi 10 mars 2021 Statut Membre Dernière intervention 29 janvier 2023 1
10 mars 2021 à 22:33
ah bon donc pas de cookie pour plus de sécurité
encore merci

pour tout cela

il me reste une dernière chose a demander
il s'agit du mot de passe oublie

je dois ouvrir un nouveau topic
0
jordane45 Messages postés 38369 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 janvier 2025 4 721
10 mars 2021 à 22:47
Pour le mot de passe oublié il faut que
1 - tu génère un token que tu stock dans la BDD par exemple au niveau de la table de tes utilisateurs
2 - que tu envoies un mail à l'utilisateur avec un lien contenant ce token
3 - lorsqu'il ouvre ce lien, tu vérifie que le token correspond bien à celui qui est dans la table et si c'est le cas tu as fiche un formulaire lui permettant de modifier son mot de passe.


Ou sinon beaucoup plus simple tu ne cherches pas une page de confirmation et tu envoies de toi-même un nouveau mot de passe générer aléatoirement
0
53pierre Messages postés 32 Date d'inscription mercredi 10 mars 2021 Statut Membre Dernière intervention 29 janvier 2023 1
10 mars 2021 à 22:50
on peux trouver un exemple quelque part avec cette manière de faire a tout hasard

merci pour les explications
0