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

Eléphant du PHP | 66 Messages

04 janv. 2023, 22:48

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.';
                }
            }
        }
    }
    ?>


Mammouth du PHP | 2703 Messages

04 janv. 2023, 23:01

mais j'ai une erreur
laquelle ?

Petit nouveau ! | 2 Messages

05 janv. 2023, 17:07

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

Eléphant du PHP | 66 Messages

07 janv. 2023, 13:36

j'ai essayé mais j'ai un truc qui merde et je ne comprends pas quoi !!

Eléphant du PHP | 66 Messages

07 janv. 2023, 13:53

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

Eléphant du PHP | 66 Messages

07 janv. 2023, 14:16

j'ai trouvé mes erreurs :

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