PHP

Email de validation

Non Résolu

Bonjour,


Je viens de faire le fichier inscription + sa modification pour rajouter le token. Apparemment je n'ai pas d'erreur, mais le soucis je ne recois pas de mail.

Pour tester si mampserver envoyait bien les mails j'ai fait un test d'envois de mail, comme ci-dessous, et tout fonctionne bien, je reçois le mail. Mais avec la création du token je n'ai rien du tout. Quand je fais une inscription c'est bon j'ai même le token qui ce fait dans la bdd.


Je me suis demandé pourquoi avez-vous écris ceci dans votre article "N'oubliez pas d'enregistrer votre clé dans votre base de données."

Que falait-il faire je n'ai pas compris.

Merci


inscription.php


$token = bin2hex(random_bytes(12));

            $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@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://www.domaine.com/conf.php?id=' . $req['id'] . '&token=' . $token . '">Valider</a><p>';

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


sendmail.php


<?php
  $dest = "ADRESSE-MAIL@gmail.com";
  $sujet = "Email de test";
  $corp = "Salut ceci est un email de test envoyer par un script PHP";
  $headers = "From: ADRESSE-MAIL@gmail.com";
  if (mail($dest, $sujet, $corp, $headers)) {
    echo "Email envoyé avec succès à $dest ...";
  } else {
    echo "Échec de l'envoi de l'email...";
  }
?>
519 vues
17 novembre 2020 à 21:05 (Édité)
Cette pub permet au site de vivre ...

2 commentaires

Salut @Meegolo,


Alors pour essayer de t'aider;


Que signifie ça :


if($id < 1){


Je pense qu'il n'est pas judicieux de faire cela...

L'$id est propre à chaque utilisateurs.

Je ferai à ta place dans ta base de donnée un argument confirm, qui aura par valeur 0.

Si confirm == 1 alors c'est que ton utilisateur à déjà vérifié son compte.

En ce qu'il en est pour le $valid :

Aucun avertissement n'est généré si la variable n'existe pas. Cela signifie que empty () est essentiellement l'équivalent concis de !Isset ($valid) || $valid == false.


Je vois que tu commences la programmation WEB, essaie de reprendre ta base de donnée tout d'abord, et revoie ton code tranquillement. Si tu ne comprends toujours pas ce qu'il ne va pas, tu pourras nous solliciter.


Bon courage,

Florent 😀


Bonsoir,


J'ai trouvé mon souci. Maintenant je reçois bien mes emails mais je rencontre un autre problème et même avec les fichiers téléchargé j'ai une erreur :


Notice: Undefined variable: valid in le fichier conf.php


Parse error: syntax error, unexpected 'if' (T_IF) Dans fichier original conf.php la ligne est if($id < 1){


 session_start();

  include('bd/connexionDB.php');

  if (isset($_SESSION['id'])){
    header('Location: index.php');
    exit;
  }

  $id = (int) $_GET['id'];
  $token = (String) htmlentities($_GET['token']);

  if($id < 1){
    $valid = false;
    $err_mess = "Le lien est erroné";
 
  }elseif(!isset($token)){
    $valid = false;
    $err_mess = "Le lien est erroné";
  }


Dans mon fichier conf.php j'ai cette erreur à la ligne 23


Notice: Undefined variable: valid in


la ligne 23 est le premier if


if($valid){
    $req = $DB->query("SELECT id FROM utilisateur WHERE id = ? AND token = ?",
      array($id, $token));
    $req = $req->fetch();


Je ne sais pas où et comment la définir


Merci pour votre aide

Cette pub permet au site de vivre ...