Page 1 sur 1

Crypté un mot de passe en 34 caractères pour une connexion et l'enregistré dans une base de donnée

Posté : 04 janv. 2023, 22:48
par elevedavid
Bonjour,

Je souhaite crypter un mot de passe en 34 caractères avec la fonction crypt(), mais j'ai une erreur et je ne trouve pas la solution et l'histoire du salt je ne comprends pas.

la ligne qui fonctionne pas : $password_input_login_crypt = crypt($password_input_login);

Merci de votre aide
<?php
    if(isset($_POST['submit_save'])){
        $user_input_login = $_POST['user_input_login'];
        $password_input_login = $_POST['password_input_login'];
        if((empty($user_input_login)) OR (empty($password_input_login))){
            echo 'Merci de saisir votre identifiant et votre mot de passe.';
        }
        else{
            $result = $mysqli->query('SELECT user_login, password_login FROM user WHERE user_login = "'.$user_input_login.'"');
            $row = $result->fetch_array();
            if(isset($row['user_login'])){
                echo  'Vous êtes déjà membres !!';              
            }
            else{
                $password_input_login_crypt = crypt($password_input_login);
                if($mysqli->query('INSERT INTO user (user_login, password_login) VALUES ("'.$user_input_login.'", "'.$password_input_login_crypt.'")')){
                    echo 'Vous êtes enregistré en tant que membre, vous pouvez vous connecter.';
                }
            }
        }
    }
    ?>


Re: Crypté un mot de passe en 34 caractères pour une connexion et l'enregistré dans une base de donnée

Posté : 04 janv. 2023, 23:01
par or 1
mais j'ai une erreur
laquelle ?

Re: Crypté un mot de passe en 34 caractères pour une connexion et l'enregistré dans une base de donnée

Posté : 05 janv. 2023, 17:07
par pbarroca
Hello,

il existe déjà une fonction php pour ça qui s'appelle password_hash() et son pendant password_verify()
c'est la solution la plus simple à mon avis

Re: Crypté un mot de passe en 34 caractères pour une connexion et l'enregistré dans une base de donnée

Posté : 07 janv. 2023, 13:36
par elevedavid
j'ai essayé mais j'ai un truc qui merde et je ne comprends pas quoi !!

Re: Crypté un mot de passe en 34 caractères pour une connexion et l'enregistré dans une base de donnée

Posté : 07 janv. 2023, 13:53
par elevedavid
je ne comprends pas pourquoi le user et le mot de passe ne s'enregistre pas dans la table. pour la table j'ai mis 34 caractères maxi
$user_input_login = $_POST['user_input_login'];
$password_input_login = $_POST['password_input_login'];                
$password_input_login_hash = password_hash($password_input_login, PASSWORD_ARGON2I);
                
                if($mysqli->query('INSERT INTO user (user_login, user_password) VALUES ("'.$user_input_login.'", "'.$password_input_login_hash.'")')){
                    echo 'Vous êtes enregistré en tant que membre, vous pouvez vous connecter.';
                }

merci de votre aide

Re: Crypté un mot de passe en 34 caractères pour une connexion et l'enregistré dans une base de donnée

Posté : 07 janv. 2023, 14:16
par elevedavid
j'ai trouvé mes erreurs :

Effectivement dans ma table je suis passé à 255 caractères et le PASSWORD_ARAGON2I remplacé par PASSWORD_DEFAULT