PHP

Erreurs lors de la connexion

Résolu

Bonjour à tous,


Je voulais remercier le créateur de ce site qui partage tout ce contenu.


J'ai suivi toute la partie "Créer son site" sauf la dernière vidéo du site "Supprimer le .php de vos URLs".


Tout ce passe très bien, mais quand j'essaie de me connecter si je mets un mauvais mot de passe, il y a 3 messages d'erreurs...


Premier :


Notice: Undefined variable: rounds in D:\wamp64\www\comptes\test\test_connexion.php on line 35


Deuxième :


Notice: Undefined variable: macleapersonnaliseretagardersecret in D:\wamp64\www\comptes\test\test_connexion.php on line 35


Troisième :


Deprecated: crypt(): Supplied salt is not valid for DES. Possible bug in provided salt format. in D:\wamp64\www\comptes\test\test_connexion.php on line 35


Et voici mon code de connexion :


<?php
    session_start();
    // Fichier PHP contenant la connexion à votre BDD
    include('test_bd/test_connexionDB.php');
    // S'il y a une session alors on ne retourne plus sur cette page  
    if (isset($_SESSION['id'])){
        header('Location: test_index.php');
        exit;
    }
    // Si la variable "$_Post" contient des informations alors on les traitres
    if(!empty($_POST)){
        extract($_POST);
        $valid = true;
        if (isset($_POST['connexion'])){
            $mail = htmlentities(strtolower(trim($mail)));
            $mdp = trim($mdp);
            if(empty($mail)){ // Vérification qu'il y est bien un mail de renseigné
                $valid = false;
                $er_mail = "Il faut mettre un mail";
            }
            if(empty($mdp)){ // Vérification qu'il y est bien un mot de passe de renseigné
                $valid = false;
                $er_mdp = "Il faut mettre un mot de passe";
            }
            // On fait une requête pour savoir si le couple mail / mot de passe existe bien car le mail est unique !
            $req = $DB->query("SELECT *
                FROM utilisateur
                WHERE mail = ? AND mdp = ?",
                array($mail, crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$"))); // array($mail, crypt($mdp, "VOTRE CLÉ UNIQUE DE CRYPTAGE DU MOT DE PASSE")));
            $req = $req->fetch();
            // Si on a pas de résultat alors c'est qu'il n'y a pas d'utilisateur correspondant au couple mail / mot de passe
            if (!isset($req['id'])){
                    $valid = false;
                    $er_mail = "Le mail ou le mot de passe est incorrecte";
            }elseif($req['n_mdp'] == 1){ // On remet à zéro la demande de nouveau mot de passe s'il y a bien un couple mail / mot de passe
                $DB->insert("UPDATE utilisateur SET n_mdp = 0 WHERE id = ?",
                    array($req['id']));
            }
            // Si on a pas de résultat alors c'est qu'il n'y a pas d'utilisateur correspondant au couple mail / mot de passe
            if ($req['id'] == ""){
                $valid = false;
                $er_mail = "Le mail ou le mot de passe est incorrecte";
            }
            // S'il y a un résultat alors on va charger la SESSION de l'utilisateur en utilisateur les variables $_SESSION
            if ($valid){
                $_SESSION['id'] = $req['id']; // id de l'utilisateur unique pour les requêtes futures
                $_SESSION['nom'] = $req['nom'];
                $_SESSION['prenom'] = $req['prenom'];
                $_SESSION['mail'] = $req['mail'];
                header('Location:  test_index.php');
                exit;
            }   
        }
    }
?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Jekyll v3.8.5">
    <title>Journal d'un ergothérapeute</title>
    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="test_css/test_style.css">
    <!-- Custom styles for this template -->
    <link href="https://fonts.googleapis.com/css?family=Playfair+Display:700,900" rel="stylesheet">
    <!-- Custom styles for this template -->
    <link href="test_css/test_blog.css" rel="stylesheet">
</head>
<body>
    <?php
        require_once('test_menu.php');
    ?>
    <div class="container">
        <div class="container">
            <div class="row">   
                <div class="col-0 col-sm-0 col-md-2 col-lg-3"></div>
                <div class="col-12 col-sm-12 col-md-8 col-lg-6">
                    <div class="card border-secondary mb-3">
                            <div class="card-header"><h2 style="text-align: center">Connexion</h2></div>
                        <div class="card-body text-secondary">
                            <form method="post">
                            <?php
                                if (isset($er_mail)){
                            ?>
                                    <div class="er-msg"><?= $er_mail ?></div>
                            <?php   
                                }
                            ?>
                                <div class="form-group">
                                    <input class="form-control" type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" required>
                                </div>
                            <?php
                                if (isset($er_mdp)){
                            ?>
                                    <div class="er-msg"><?= $er_mdp ?></div>                      
                            <?php   
                                }
                            ?>
                                <div class="form-group">
                                    <input class="form-control" type="password" placeholder="Mot de passe" name="mdp" value="<?php if(isset($mdp)){ echo $mdp; }?>" required>
                                </div>
                                <div class="form-group mdp-center">
                                    <a href="test_motdepasse.php">Mot de passe oublié</a>
                                </div>
                                <div class="form-group">
                                    <button class="btn btn-secondary" type="submit" name="connexion">Se connecter</button>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<br>
        <footer class="blog-footer">
            <p>Site réaliser par <a href="http://localhost/comptes5.0/test_voir_profil.php?id=1">Tyo</a>.</p>
            <p>
                <a href="#">Retour en haut</a>
            </p>
        </footer>
        <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    </body>
</html>


Je vous remercie d'avance, cela fait plusieurs jours que je suis bloqué sur ces erreurs.


Bonne journée.


TheBanana



PS : je viens de rééditer mon message car les erreurs présentent lors de l'inscription sont réglés. Avec le menu fait comme dans la vidéo et non un require('header.php') cela fonctionne.

1073 vues
20 janvier 2020 à 20:45 (Édité)
Cette pub permet au site de vivre ...

2 commentaires

Merci beaucoup pour les 2 erreurs je vais aller les régler tout de suite.

Pour tes erreurs 2 & 3 cela vient de la fonction crypt.


La fonction crypt de PHP te permet de crypter le mot de passe de tes utilisateurs mais pour que cela soit fiable et unique il faut que tu personnalises ta clé secrète.


Donc il te faudrait une clé comme celle-ci :


$6$rounds=5000$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU$
Cette pub permet au site de vivre ...