PHP

Problème de l'envoi du mail à l'inscription

Résolu

Bonsoir ,

Lorsque je créer un utilisateur je recois bien le token etc... mais aucun mail j'ai essayer plusieurs choses mais rien ne change.

Voici mon code :



<?php
    session_start();

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

    $token = bin2hex(random_bytes(12));

    // 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, token) VALUES 
                    (?, ?, ?, ?, ?, ?)", 
                    array($nom, $prenom, $mail, $mdp, $date_creation_compte, $token));

                    $req = $DB->query("SELECT *
                    �  FROM utilisateur
                      WHERE mail = ?",
                      array($mail));
                      
                    $req = $req->fetch();
                     
                    $mail_to = $req['mail']; 
                     
                    //=====Création du header de l'e-mail.
                    $header = "From: no-reply <no-reply@gmail.com>\n";
                    $header .= "MIME-version: 1.0\n";
                    $header .= "Content-type: text/html; charset=utf-8\n";
                    $header .= "Content-Transfer-ncoding: 8bit";
                    //=======
                     
                    //=====Ajout du message au format HTML          
                    $contenu = '<p>Bonjour ' . $req['nom'] . ',</p><br>
                    �   <p>Veuillez confirmer votre compte <a href="http://localhost/conf.php?id=' . $req['id'] . '&token=' . $token . '">Valider</a><p>';

                    mail($mail_to, 'Confirmation de votre compte', $contenu, $header);

                header('Location: index.php');
                exit;
            }
        }
    }
?>
548 vues
02 juin 2021 à 9:12 (Édité)
Cette pub permet au site de vivre ...

2 commentaires

Merci @Flomir


je vais essayer de faire sa alors !


Bonne journée à toi

Cc @Zadrox,


La fonction mail de PHP ne fonctionne pas en local, à moins de faire des modifs relou dans les fichiers PHP...


Je serai toi j'utiliserai PhpMailer, il est plus puissant, et fonctionne très bien ! Suis ce tutoriel : voir le lien


Bon courage 😜

Cette pub permet au site de vivre ...