PHP

Pas de mail avec le mot de passe oublie

Résolu

Bonjour !


Très bon tuto pour l'espace membre et donc à tous un très grand merci.

J'ai juste un souci en faisant des tests avec Wampserver, le nouveau mot de passe n'est pas envoyé sur mon adresse mail.

Est-ce normal car je suis en local?


Merci de votre aide !

1181 vues
20 février 2021 à 13:10 (Édité)
Cette pub permet au site de vivre ...

26 commentaires

Re: @flexi2202 😀!


Tout d'abord, je vais te faire changer pas mal de choses dans ton code, afin de le rendre plus simple et plus agréable par la suite !

Ces lignes qui te permettent de récupérer un élément d'un formulaire, n'est plus trop conseillé aujourd'hui:

      $nom = htmlentities(trim($nom)); // On récupère le nom
      $prenom = htmlentities(trim($prenom)); // on récupère le prénom
      $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail
      $mdp = trim($mdp); // On récupère le mot de passe 
      $confmdp = trim($confmdp); // On récupère la confirmation du mot de passe


Après avoir récupéré ceci, tu faisais par exemple ça:

if(empty($mail)){


ET BIEN MAINTENANT CHANGEONS ÇA !

• Supprime les lignes :

$nom = htmlentities(trim($nom)); // On récupère le nom
      $prenom = htmlentities(trim($prenom)); // on récupère le prénom
      $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail
      $mdp = trim($mdp); // On récupère le mot de passe 
      $confmdp = trim($confmdp); // On récupère la confirmation du mot de passe


Et remplace ça :

if(empty($mail)){ 
}


par ça:

if(empty($_POST['mail'])){
}


Une fois que tu auras finis de changer tout ça,

on va changer la méthode de cryptage ! Cela va supprimer les erreurs.

La méthode de cryptage que je vais te montrer est la méthode Bcrypt :

• Supprime cette ligne:

$mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");


Et remplace là par:

$mdp = password_hash($_POST['mdp'], PASSWORD_BCRYPT);


Lorsque tu va créer la page connexion.php tu vérifieras ce mot de passe pas la fonction password_verify de PHP !

password_verify($_POST['mdp'], *******)
// ******* => Tu remplaceras ça par le mot de passe hashé de l'utilisateur stocké dans ta base de donnée 


N'hésite pas à me solliciter si tu n'as pas compris certains points,

Et prends bien le temps de tout changer !


Bon courage,

@Flomir 👊

C'est super gentil de me prendre en charge et de me répondre


Voici donc le contenu du fichier inscription qui pose souci avec l'hébergeur ooowebhost


<?php
    session_start();


    include('bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD


    // S'il y a une session alors on ne retourne plus sur cette page
    if (isset($_SESSION['id'])){
        header('Location: index.php'); 
        exit;
    }


    // Si la variable "$_Post" contient des informations alors on les traitres
    if(!empty($_POST)){
        extract($_POST);
        $valid = true;


        // On se place sur le bon formulaire grâce au "name" de la balise "input"
        if (isset($_POST['inscription'])){


            $nom  = htmlentities(trim($nom)); // On récupère le nom
            $prenom = htmlentities(trim($prenom)); // on récupère le prénom
            $mail = htmlentities(strtolower(trim($mail))); // On récupère le mail
            $mdp = trim($mdp); // On récupère le mot de passe 
            $confmdp = trim($confmdp); //  On récupère la confirmation du mot de passe


            //  Vérification du nom
            if(empty($nom)){
                $valid = false;
                $er_nom = ("Le nom d' utilisateur ne peut pas être vide");
            }       


            //  Vérification du prénom
            if(empty($prenom)){
                $valid = false;
                $er_prenom = ("Le prenom d' utilisateur ne peut pas être vide");
            }       


            // Vérification du mail
            if(empty($mail)){
                $valid = false;
                $er_mail = "Le mail ne peut pas être vide";


                // On vérifit que le mail est dans le bon format
            }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){
                $valid = false;
                $er_mail = "Le mail n'est pas valide";


            }else{
                // On vérifit que le mail est disponible
                $req_mail = $DB->query("SELECT mail FROM utilisateur WHERE mail = ?",
                    array($mail));


                $req_mail = $req_mail->fetch();


                if ($req_mail['mail'] <> ""){
                    $valid = false;
                    $er_mail = "Ce mail existe déjà";
                }
            }


            // Vérification du mot de passe
            if(empty($mdp)) {
                $valid = false;
                $er_mdp = "Le mot de passe ne peut pas être vide";


            }elseif($mdp != $confmdp){
                $valid = false;
                $er_mdp = "La confirmation du mot de passe ne correspond pas";
            }


            // Si toutes les conditions sont remplies alors on fait le traitement
            if($valid){


                $mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");


                $date_creation_compte = date('Y-m-d H:i:s');


                // On insert nos données dans la table utilisateur
                $DB->insert("INSERT INTO utilisateur (nom, prenom, mail, mdp, date_creation_compte) VALUES 
                    (?, ?, ?, ?, ?)", 
                    array($nom, $prenom, $mail, $mdp, $date_creation_compte));


                header('Location: index.php');
                exit;
            }
        }
    }
?>


<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Inscription</title>
    </head>


    <body>      
        <div>Inscription</div>
        <form method="post">


            <?php
                // S'il y a une erreur sur le nom alors on affiche
                if (isset($er_nom)){
                ?>
                    <div><?= $er_nom ?></div>
                <?php   
                }
            ?>
            <input type="text" placeholder="Votre nom" name="nom" value="<?php if(isset($nom)){ echo $nom; }?>" required>   


            <?php
                if (isset($er_prenom)){
                ?>
                    <div><?= $er_prenom ?></div>
                <?php   
                }
            ?>
            <input type="text" placeholder="Votre prénom" name="prenom" value="<?php if(isset($prenom)){ echo $prenom; }?>" required>   


            <?php
                if (isset($er_mail)){
                ?>
                    <div><?= $er_mail ?></div>
                <?php   
                }
            ?>
            <input type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }?>" required>


            <?php
                if (isset($er_mdp)){
                ?>
                    <div><?= $er_mdp ?></div>
                <?php   
                }
            ?>
            <input type="password" placeholder="Mot de passe" name="mdp" value="<?php if(isset($mdp)){ echo $mdp; }?>" required>
            <input type="password" placeholder="Confirmer le mot de passe" name="confmdp" required>


                <button type="submit" name="inscription">Envoyer</button>


        </form>
    </body>
</html>

Re @flexi2202 😁


T'en fais pas c'est à jour instantanément !

Tu devrais ne plus utiliser Wamp (voir la raison).Exporte tout les fichiers de ton projet puis désinstalle Wamp avec Revo Uninstaller !Ensuite installe XAMPP directement puis mets les fichiers de ton projet dans le répertoire "htdocs" (situé dans "C:\xampp\htdocs") tout en laissant les autres fichiers présents

C'est vraiment important ! Il y a des erreurs qui existent avec Wamp qui ne devrait pas exister. On te conseille fortement Xampp ! Je vais te répondre plus rapidement cette fois, j'étais occupé toute la journée !

Par contre si tu peux nous donner l'ensemble du code de la page afin de t'aider cela nous aiderai grandement !


À très vite,

@Flomir !

re bonjour

je ne sais pas si mon pst a bien été remis a jour

Bonjour Flomir


Avant toute chose un grand merci pour cette explication et surtout pour la correction

Des fois mon clavier saute des lettres

Mais pour l'instant je vais laisser tomber cette histoire de xampp


Pourrais-tu m'expliquer stp en quelques mots pourquoi c'est mieux xampp que wamp


Je vais d'abord essayer de bien le comprendre et l'utiliser dans ce sera pour la semaine prochaine


En attendant et comme je l'avais expliqué

J'ai un autre souci


Je suis occupé à essayer de mettre en place l'espace membre sur mon hébergeur gratuit 000webhost


J'ai une erreur au niveau du fichier incription.php


Après avoir rentre toutes les infos pour l'inscription et lorsque je valide je reçois cette erreur


Notice: Undefined variable: rounds in /storage/ssd4/760/16000760/public_html/espace-membre-site-0/inscription.php on line 74

Notice: Undefined variable: macleapersonnaliseretagardersecret in /storage/ssd4/760/16000760/public_html/espace-membre-site-0/inscription.php on line 74

Warning: Cannot modify header information - headers already sent by (output started at /storage/ssd4/760/16000760/public_html/espace-membre-site-0/inscription.php:74) in /storage/ssd4/760/16000760/public_html/espace-membre-site-0/inscription.php on line 83


Ce qui correspond aux lignes suivantes dans le code


$mdp = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");


et


 exit;



Pourtant l'utilisateur a bien été crée

Merci de l'aide

Bonjour @flexi2202 !


Prend ton temps pour écrire ton topic, tu as fais pleins d'erreur de syntaxe, je l'ai réédité !

Tu devrais ne plus utiliser Wamp  (voir la raison).

Exporte tout les fichiers de ton projet puis désinstalle Wamp avec Revo Uninstaller !

Ensuite installe XAMPP directement puis mets les fichiers de ton projet dans le répertoire "htdocs" (situé dans "C:\xampp\htdocs") tout en laissant les autres fichiers présents 

Redis-nous si le problème persiste 

Cette pub permet au site de vivre ...
1
2
3