Je ne comprends pas qu'elle erreur je fais pour que le plus simple fonctionne bien.
Je m'explique j'ai fais un formulaire d'inscription avec seulement le nom, le mail et le mot de passe en md5 et un confirme mot de passe cela fonctionne très bien.
Ensuite je voulais mettre en password_hash et là ça bloque.

Mais le formulaire d'inscription que j'aimerais devrait ressembler à ça.
Nom - Prénom - Rue - code postal - Ville - Email - Téléphone - Natel (Portable) - date de naissance - Licence - Nationalité - Fonction (Admin, Comite, Membre) et Mot de passe.
Pas besoin de répéter le mot de passe car c'est moi qui inscrirais les membres et leurs donnerais le mot de passe (Car certaines pages du site seront réserver seulement aux membres du club).
Je vous joins le code du formulaire simple qui fonctionne, mais pas asse protégé et le code du formulaire qui me plairais d'avoir, mais qui ne fonctionne pas (Ou sont mes erreurs).

Je m'aperçois aussi que maintenant lorsque nous sommes inscris sur certains site et que nous voulons nous connecter, plus besoin de rentrer le mot de passe nous recevons automatiquement un code de connexion(de qu'elle manière cela fonctionne ?) dans l'attente je vous remercies d'avance.
Christian
  
Le code normal
if(isset($_POST['submit']))
    {
        $name = mysqli_real_escape_string($conn, $_POST['name']);
        $email = mysqli_real_escape_string($conn, $_POST['email']);
        $pass = md5($_POST['password']);
        $cpass = md5($_POST['cpassword']);
        $user_type = $_POST['user_type'];

        $select = "SELECT * FROM user_form WHERE email = '$email' && password = '$pass'";

        $result = mysqli_query($conn, $select);

        if(mysqli_num_rows($result) > 0)
        {
            $error[] = 'Le nom existe déjà !'; 
        }else {
            if($pass != $cpass)
            {
               $error[] = 'Mot de passe non valable !'; 

            }else {
                $insert = "INSERT INTO user_form (name, email, password, user_type) VALUES ('$name', '$email', '$pass', '$user_type')";
                mysqli_query($conn, $insert);
                header('Location: connexion.php');
            }
        }
    };


Et celui que j'aimerai voir fonctionné

if(isset($_POST['submit']))
    {
        $nom = mysqli_real_escape_string($conn, $_POST['nom']);
        $prenom = mysqli_real_escape_string($conn, $_POST['prenom']);
        $adresse = mysqli_real_escape_string($conn, $_POST['adresse']);
        $cp = mysqli_real_escape_string($conn, $_POST['cp']);
        $localite = mysqli_real_escape_string($conn, $_POST['localite']);
        $email = mysqli_real_escape_string($conn, $_POST['email']);
        $tel = mysqli_real_escape_string($conn, $_POST['tel']);
        $natel = mysqli_real_escape_string($conn, $_POST['natel']);
        $naissance = mysqli_real_escape_string($conn, $_POST['naissance']);
        $licence = mysqli_real_escape_string($conn, $_POST['licence']);
        $nationalite = mysqli_real_escape_string($conn, $_POST['nationalite']);
        $pass =  mysqli_real_escape_string($conn, $_POST['password']);
        $user_type = $_POST['user_type'];

        $pass = password_hash($pass, PASSWORD_DEFAULT);

        $select = "SELECT * FROM membres WHERE email = '$email' && password = '$pass'";

        $result = mysqli_query($conn, $select);

        if(mysqli_num_rows($result) > 0)
        {
            $error[] = 'Le nom existe déjà !'; 
        } 
        else 
            {
                $insert = "INSERT INTO membres (nom, prenom, adresse, cp, localite, email, tel, natel, naissance, licence, nationalite password, $user_type) 
                    VALUES ('$nom', '$prenom', '$adresse', '$cp', '$localite', '$email', '$tel', '$natel', '$naissance', '$licence', '$nationalite' '$pass', '$user_type')";
                mysqli_query($conn, $insert);
                header('Location: connexion.php');
            }            
        
    };
connecté
Modérateur
Hello,

Sans voir la table SQL (DESC membres) est le code HTML du formulaire.... on va pas aller bien loin.
mis à part ça :

$pass = password_hash($pass, PASSWORD_DEFAULT);

        $select = "SELECT * FROM membres WHERE email = '$email' && password = '$pass'";

        $result = mysqli_query($conn, $select);

        if(mysqli_num_rows($result) > 0)
        {
            $error[] = 'Le nom existe déjà !'; 
        } 


SQL UNIQUE Constraint
Modifié par niuxe (20 Jun 2022 - 19:08)