Double mail de confirmation
Résolu
R0M1
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en train de faire un site web et j'ai fait une A2F mais lorsque je tape le code envoyer par mail dans le input(qui se trouve dans un form), la page s'actualise et le mail est envoyé une deuxième fois.
Merci d'avance.
Si vous voulez le code dite le moi.
Je suis en train de faire un site web et j'ai fait une A2F mais lorsque je tape le code envoyer par mail dans le input(qui se trouve dans un form), la page s'actualise et le mail est envoyé une deuxième fois.
Merci d'avance.
Si vous voulez le code dite le moi.
A voir également:
- Pas de mail de confirmation boulanger
- Confirmation de lecture whatsapp - Guide
- Confirmation de lecture gmail - Guide
- Darty ou boulanger - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, donne-nous plus d'information si tu souhaites que nous t'aidions.
veux-tu éviter que la page s'actualise?
veux-tu éviter que la page s'actualise?
Bah le code c'est tout ce que j'ai :
<?php session_start(); if (!isset($_SESSION['maillogin'])) { ?> <!DOCTYPE html> <html> <head> <title>Erreur</title> <meta charset="utf-8"> </head> <body> <p>Une erreur est survenue, votre mail n'a pas été retenu ! Vous devez donc créer un nouveau compte ! (Si l'inscription est impossible veuillez ressayer dans 24 heures)</p><a href="../">S'inscrire</a> </body> </html> <?php }else{ $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', ''); $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ?"); $requser->execute(array($_SESSION['maillogin'])); $userexist = $requser->rowCount(); if($userexist == 1){ $userinfo = $requser->fetch(); $_SESSION['id'] = $userinfo['id']; $_SESSION['mail'] = $userinfo['mail']; $_SESSION['confirme'] = $userinfo['confirme']; $_SESSION['key'] = $userinfo['confirmkey']; }else{ echo "Hum.. Je pense qu'il y a eu un bug, c'est impossible que 2 utilisateurs ont le même mail !"; } if(isset($_SESSION['confirme']) AND $_SESSION['confirme'] == 0){ ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); $from = "r0m1.seb@free.fr"; $to = $_SESSION['maillogin']; $subject = "A2F MyVideo"; $message = "Le code A2F : " . $_SESSION['key'] . " Nous avons un petit probleme que nous n'arrivons pas a resoudre, c'est que lorsque vous entrerez ce code dans le site, un deuxieme message vous sera envoye qui est un double de celui ci."; $headers = "From:" . $from; mail($to,$subject,$message, $headers); echo "L'email a été envoyé."; ?> <!DOCTYPE html> <html> <head> <title>A2F</title> <meta charset="utf-8"> </head> <body> <form method="POST"> <label for="a2f">Un mail de confirmation viens d'être envoyé à cette adresse : <?php echo $_SESSION['maillogin'] ?> !</label> <input type="text" name="a2f" id="a2f"> <input type="submit" name="a2fconfirm" id="a2fconfirm" value="Confirmer"> <p>Si vous fermer cette page ou si vous ne confirmez pas votre mail sous 24 heures, le compte sera supprimé !</p> </form> </body> </html> <?php if(isset($_POST['a2fconfirm'])){ $a2f2 = htmlspecialchars($_POST['a2f']); if($a2f2 == $_SESSION['key']){ $updateuser = $bdd->prepare('UPDATE membres SET confirme = "1" WHERE id = :id'); $updateuser->execute(array( 'id' => $_SESSION['id'] )); unset($_POST['a2fconfirm']); echo "Votre compte viens d'être confirmé à l'instant !<br>Vous serez redirigez vers la page de connection dans 10 secondes !"; header("Location: ../../signin/"); exit(); }else{ echo "Le clé d'authentification et le code envoyé par mail ne corresponde pas !"; } } }else{ echo "Votre compte est déjà confirmé<br>Redirection vers le profil dans 10 secondes"; sleep(10); header("Location: ../../profil.php?id=" . $_SESSION['id']); } } ?>
merci d'utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Alors, lorsque on arrive sur cette page on a directement un mail d'envoyé ensuite, on entre le code dans le input puis le php virifie si les 2 codes sont pareil et ensuite on update le membres en le mettant en confirme 1 au lieu de 0 et c'est tout
suis-tu ces bonnes pratiques? https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
D'après ce que je comprends... ton souci se situe sur le IF de ton envoi de mail
Au lieu de
Il faudrait vérifier que tu ne "submit" pas ton formulaire :
Et comme te l'a suggéré Yg_be, appliques les conseils donnés ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ca rendra ton code plus lisible et plus facilement maintenable.
D'après ce que je comprends... ton souci se situe sur le IF de ton envoi de mail
Au lieu de
if(isset($_SESSION['confirme']) AND $_SESSION['confirme'] == 0){
Il faudrait vérifier que tu ne "submit" pas ton formulaire :
if( !isset($_POST['a2fconfirm']) && isset($_SESSION['confirme']) && $_SESSION['confirme'] == 0){
Et comme te l'a suggéré Yg_be, appliques les conseils donnés ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ca rendra ton code plus lisible et plus facilement maintenable.