Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je voudrai faire un systeme de connection

connection.php partie connection :

if (!empty($_POST['connection'])) {
        if (!empty($_POST['passwordcon']) AND !empty($_POST['emailcon'])) {
            $passwordcon = sha1($_POST['passwordcon']);
            $emailcon = htmlspecialchars($_POST['emailcon']);
            if (filter_var($emailcon, FILTER_VALIDATE_EMAIL)) {
                $requser = $bdd->prepare('SELECT * FROM users WHERE email = ? AND password = ?');
                $requser->execute([$emailcon,$passwordcon]);
                $userexist = $requser->rowCount();
                if ($userexist == 1) {
                    $userinfo = $requser->fetch();
                    if ($userinfo['is_verify'] == 1) {
                        $_SESSION['id'] = $userinfo['id'];
                        $_SESSION['pseudo'] = $userinfo['pseudo'];
                        $success = "Vous etes connecté <a href='/user/profil/".$_SESSION['id']."' class='alert-link'>Acceder a votre profil</a>";
                    }else{
                        $error = "Votre compte n'est pas confirmé <a href='user/send/activation'>Envoyer le mail de confiamtion</a>";
                    }
                }else{
                    $error = "Email ou Mot de Passe mauvais";
                }
            }else{
                $error = "L'adresse email est fausse";
            }
        }else{
            $error = "Veuiller remplir tous les champs de formulaires de connection";
        }
    }

formulaires :

<form method="POST">
                <div class="form-group">
                    <label for="email">Email</label>
                    <input type="email" name="emailcon" id="email" class="form-control">
                </div>
                <div class="form-group">
                    <label for="password">Mot de Passe</label>
                    <input type="password" name="passwordcon" id="password" class="form-control">
                </div>
                <div class="form-group">
                    <input type="submit" name="connection" value="Se connecter" class="btn btn-info">
                    <br><a href="/DevInput/users/password">Mot de Passe oublié</a>
                </div>
            </form>

Ce que je veux

Je voudrai que l'utilisateur se connecte

Ce que j'obtiens

il me dit que j'utilise le mauvais mot de passe alors que j'utilise le bon .

5 réponses


Lartak
Réponse acceptée

Bonsoir.

Oui il est bien sha1 dans ma base donnée

Est-ce que le champ correspondant en base de données fait bien 40 caractères ?
Pour t'assurer qu'il n'y a pas de problème en base de données, dans ton code ajoutes :

die($passwordcon);

Et vérifies que le mot de passe correspond bien à celui que tu as en base de données.

Bonjour,

Est-ce que le mot de passe de l'utilisateur est bien hasher via sha1() dans ta base de donnée ?

D'ailleurs aujourd'hui le sha1() n'est plus vraiment conseillé pour les mot de passe tu devrais plutot utiliser la fonction password_hash()

Il y a peut etre une erreur dans ton code mais je laisse les autres répondre, je suis sur téléphone et c'est pas évident ;)

Layp
Auteur

Oui il est bien sha1 dans ma base donnée

Layp
Auteur

Je vais essayer vous dit apres

Layp
Auteur

C'est bon sa marche merci