envoie mail lors de son inscription

envoie mail lors de son inscription - PHP - Programmation

Marsh Posté le 11-05-2019 à 17:15:08    

bonjour, j'ai crée un systeme d'enregistrement
 
pseudo, mdp et mail.
 
j'aimerais que les membres clique sur une cléf de validation  
 
donc j'ai pensé  
 
membre_validdation ave enum 0 (attende de validation) et 1 pour valider accepter
 
et ce code a mon avis je dois mettre après le tratement du mail
 

Citation :

<?php
//Message
$message = "Bienvenue sur mon super forum !";
//Titre
$titre = "Inscription à mon super forum !";
 
mail($_POST['email'], $titre, $message);
?>


 
 
si quelqu'un peut m'expliquer ou je doit précisément le mettre coment ca se passe
 
merci de votre aide

Reply

Marsh Posté le 11-05-2019 à 17:15:08   

Reply

Marsh Posté le 11-05-2019 à 17:41:18    

salut,
 
dans ton mail il faut que tu ajoute un lien du genre monsite.fr?validation=xxxxxx
 
quand l'utilisateur clique sur le lien, tu dois détecter que c'est le lien de validation, et faire le traitement pour modifier membre_validation.
 
dans cet exemple, tu peux détecter si c'est la page de validation en faisant :
 

Code :
  1. if(isset($_GET['validation'])) {
  2. // vérifications et traitement
  3. }

Reply

Marsh Posté le 11-05-2019 à 18:32:42    

si je mets juste ca après le traitement mail

Citation :

    // on envoiie un mail
     if(isset($_GET['validation'])) {
// vérifications et traitement
//Message  
$message = "Bienvenue sur mon super forum !";  
//Titre  
$titre = "Inscription à mon super forum !";  
 
mail($_POST['email'], $titre, $message);  
}


 
ca n'envoi pas un mail dans ma boite mail

Reply

Marsh Posté le 11-05-2019 à 19:41:30    

Salut
 
et dans ton $_POST['email'] il y a quoi ? D'ailleurs il vient d'où ??


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 12-05-2019 à 16:56:31    

SICKofitALL a écrit :

Salut
 
et dans ton $_POST['email'] il y a quoi ? D'ailleurs il vient d'où ??


 
+1
et d'ailleurs toujours vérifier les données GET et POST
règle n°1 : ne jamais faire confiance à l'utilisateur ;)
ici, vérifier que c'est bien un email que l'on a avant d'en faire quelque chose : if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
 
dans ton cas je pense aussi que tu n'as pas de POST ['email'] ; tu devrais activer l'affichage des erreurs et warnings, tu auras surement vu l'erreur s'afficher à ton écran ;)

Reply

Marsh Posté le 12-05-2019 à 17:33:08    

oui mais j'ai un champs
 

Citation :

    <div class="global-inscription">
     <label class="inscription-label" for="email">* Votre adresse Mail :</label>
     <div class="inscription-input icon-inscription-input-mail"><input type="text" name="email" id="email" /></div>
     <p class="inscription-description">confirmez votre email.</p>
     <span class="inscription-pris-non-pris icon-inscription-ok"></span>
     </div>


 
je recupere mon mail
 

Citation :

    $email = $_POST['email'];


 
et après je verifie
 

Citation :

    //Vérification de l'adresse email
     //Il faut que l'adresse email n'ait jamais été utilisée
     $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
     $query->bindValue(':mail',$email, PDO::PARAM_STR);
     $query->execute();
     $mail_free=($query->fetchColumn()==0)?1:0;
     $query->CloseCursor();
     
     if(!$mail_free)
     {
     $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
     $i++;
     }
     
     //On vérifie la forme maintenant
     if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
     {
     $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
     $i++;
     }


 
et ensuite ensous je met le code envoi mail
 
mais ca n'envoie rien ;)

Reply

Marsh Posté le 12-05-2019 à 19:20:10    

Si tu mets que un bout de code pour envoyer un mail, ça fonctionne? Je suppose que non, car aujourd'hui pour pouvoir envoyer un mail ton serveur doit avoir un reverse-DNS et tout un bazar (que je ne saurait te citer mais la fonction de recherche sait le faire), c'est pour limiter le spam...

Reply

Marsh Posté le 12-05-2019 à 19:37:04    

ivan941 a écrit :

oui mais j'ai un champs
 

Citation :

    <div class="global-inscription">
     <label class="inscription-label" for="email">* Votre adresse Mail :</label>
     <div class="inscription-input icon-inscription-input-mail"><input type="text" name="email" id="email" /></div>
     <p class="inscription-description">confirmez votre email.</p>
     <span class="inscription-pris-non-pris icon-inscription-ok"></span>
     </div>


 
je recupere mon mail
 

Citation :

    $email = $_POST['email'];


 
et après je verifie
 

Citation :

    //Vérification de l'adresse email
     //Il faut que l'adresse email n'ait jamais été utilisée
     $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
     $query->bindValue(':mail',$email, PDO::PARAM_STR);
     $query->execute();
     $mail_free=($query->fetchColumn()==0)?1:0;
     $query->CloseCursor();
     
     if(!$mail_free)
     {
     $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
     $i++;
     }
     
     //On vérifie la forme maintenant
     if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
     {
     $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
     $i++;
     }


 
et ensuite ensous je met le code envoi mail
 
mais ca n'envoie rien ;)


 
+1 en effet pour le check de l'envoi d'email à partir de chez toi. Il y a de grandes chances que ca ne fonctionne pas tel quel afin de limiter les possibliités de spam.
 
Sinon perso je validerais d'abord l'email avant de vérifier qu'il existe dans la BDD. En effet, si l'email n'est pas correct, il ne sera de tte facon pas dans la BDD. Tu gagnes en perf ;)
 
Un truc comme ca :!

Code :
  1. // contiendra ttes les erreurs
  2. $email_erreur = [];
  3. if (filter_var ($email_a, FILTER_VALIDATE_EMAIL))
  4. {
  5. $email_erreur[] = "Votre adresse E-Mail n'a pas un format valide";
  6. }
  7. // tu peux quitter ici, ou continuer si tu veux checker toutes les erreurs tout de même
  8. $stmt = $db->prepare ('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email = :mail');
  9. $stmt->execute ([ ':mail' => $email ]);
  10. if($stmt->fetchColumn() > 0)
  11. {
  12. $email_erreur[] = "Votre adresse email est déjà utilisée par un membre";
  13. }
  14. // ...
  15. // affiche ttes les erreurs
  16. foreach ($email_erreur as $erreur)
  17. {
  18. echo $erreur, '<br>';
  19. }


Message édité par SICKofitALL le 12-05-2019 à 19:38:19

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 12-05-2019 à 19:44:38    

merci, mais je croit que c'est un peut trop compliquer por moi je laisse tombé ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed