Salut a tous.
je travail sur un formulaire "mot de passe oublié"
le code n'est pas super propre et toute les fonctionnalité ne sont pas mise en place.
j'ai donc un formulaire de récupération de mot de passe via deux méthode.
avec jQuery le formulaire ce crée en fonction du choix de l'utilisateur.
voici le formulaire :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> <form id="rescue_pass" method="post"> <div class="form-group"> <select class="form-control" name="list_choise" id="list_choise"> <option value="default" selected>Choisissez votre méthode de récupération</option> <option id="by_mail" value="by_mail">Par mail</option> <option id="by_key" value="by_key">Par clé de récupération</option> </select> </div> <div class="form-group" id="adjustForm"> </div> </form> <div id="status_rescue" class="alert alert-primary" role="alert"> Merci de remplir tous les champs. </div> </div>
voici le code jQuery
Code js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 $(document).ready(function(){ $("#status_rescue").html('Choisissez votre méthode de récupération').fadeIn(); //Choix de la methode de recuperation $("select[name='list_choise']").change(function(){ var selectedVal = $(this).val(); var rPseudo = '<div class="form-group">\ <input type="text" placeholder="Entrez votre pseudo" id="rescue_pseudo" name="rescue_pseudo" maxlength="16" class="form-control" required/>\ </div> '; var rMail = '<div class="form-group">\n' + '<input type="email" placeholder="Entrez votre email de secours" id="rescue_email" name="rescue_email" class="form-control" required/>\n' + '</div> '; var rKey = '<div class="form-group">\n' + '<input type="text" placeholder="Entrez votre clé de récupération" id="rescue_key" name="rescue_key" class="form-control" required/>\n' + '</div> '; var cgu = '<div class="form-group form-check">\n' + '<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">\n' + '<label class="form-check-label" for="exampleRadios2">\n' + '<a href="https://beta.devosi.org/legal-notice" target="_blank">J\'accept les Conditions Générale</a>\n' + '</label>\n' + '</div>'; var rsubmit = '<div class="form-group">\n' + '<input type="submit" id="sRescue_pass" class="btn btn-primary btn-block" value="Lancer la procédure" />\n' + '</div>'; if (selectedVal == "default") { $("#adjustForm").empty(); $("#status_rescue").html('Choisissez votre méthode de récupération').fadeIn(400); } else if (selectedVal == "by_mail") { $('#adjustForm').empty(); $('#adjustForm').append(rPseudo, rMail, cgu, rsubmit); $("#status_rescue").html('Merci de remplir tous les champs').fadeIn(400); } else { $("#adjustForm").empty(); $('#adjustForm').append(rPseudo, rKey, cgu, rsubmit); $("#status_rescue").html('Merci de remplir tous les champs').fadeIn(400); } // On fait disparaitre la div #status quand on clique dans un champ du formuaire $("#adjustForm input").focus(function(){ $("#status_rescue").fadeOut(800); $(this).removeClass('is-invalid'); }); }); // Traitement du formulaire de recuperation de mot de passe $("#rescue_pass").submit(function(e){ e.preventDefault(); var status = $("#rescue_status") ,pseudo = $("#rescue_pseudo").val() ,key = $("#rescue_key").val() ,email = $("#rescue_email").val(); $('#rescue_pseudo,#rescue_email').removeClass('is-invalid'); if(pseudo == "" || email == ""){ status.addClass("alert-danger"); status.html("Le formulaire n'est pas remplis correctement").fadeIn(400); } else { $.ajax({ method: "post", url: "/functions/rescuePass.php", dataType:'json', data: { 'rescue_pseudo' : pseudo, 'rescue_email' : email }, beforeSend: function(){ $("sRescue_pass").attr("value", "Traitement en cours ..."); }, success: function(data){ console.log("success :"+JSON.stringify(data)); $("#sRescue_pass").attr("value", "Lancer la procédure"); if(data.erreur){ status.removeClass('alert-success').addClass("alert-danger") .html("Le formulaire contient des erreurs").fadeIn(400); $("#sRescue_pass").attr("value", "Lancer la procédure") .addClass("btn-primary").css("color", "white"); if(data.erreur.pseudo||data.erreur.pseudo_numerique){ $('#rescue_pseudo').addClass('is-invalid'); } if(data.erreur.email){ $('#rescue_email').addClass('is-invalid'); } $.each(data.erreur,function(v,k){ status.append('<p><b>'+k+'</b></p>'); }); } else { status .removeClass('alert-danger') .addClass("alert-success") .html('<strong>Une derniere etape ' + pseudo + ' !</strong><br/>Un lien vient de vous etre envoyé à l\'adresse mail indiqué.<br/>Veuillez cliquer sur <a href="#">ce lien</a> pour terminer la procédure de récupération de votre mot de passe') .fadeIn(400); } }, error:function(err){alert(err.responseText);} }); } }); });
et voici le code PHP qui traite avec la BDD
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 <?php if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ $data=[]; //Connection a la base de donnee require "connectdb.php"; $pseudo=$_POST['rescue_pseudo']; $email=$_POST['rescue_email']; if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ $data['erreur']['email']="Cette adresse email est incorrecte!"; } $c= $db->prepare("SELECT user from user where user=:rescue_pseudo"); $c->execute([ ':rescue_pseudo' =>$pseudo ]); if($c->rowCount()<1){ $data['erreur']['rescue_pseudo']="Pseudo inconnu, veuillez réessayer"; } if(is_numeric($pseudo[0])){ $data['erreur']['pseudo_numerique']="Le pseudo est incorrect!"; } $c= $db->prepare("SELECT id from user where email=:recue_email"); $c->execute([ ':rescue_email' =>$email ]); if(!isset($data['erreur'])){ function send_mail($msg, $email){ $to = $email; $from = "contact@osi.org"; $subject = "Mot de passe oublié"; $message = $msg; $headers = 'MIME-Version: 1.0' . "\n". 'Content-type: text/html; charset=utf-8' . "\n". 'From: Teste<'.$from.'>' . "\n". "X-Mailer: PHP/" . phpversion() . "\r\n"; mail($to, $subject, $message, $headers); } $msg = "<!DOCTYPE html> <html lang='fr'> <head> <meta charset=\"UTF-8\" /> </head> <body> Bonjour $pseudo,<br/><br/> <h2> Vous avez oublié le mot de passe de votre compte</h2> <p> Pour des raisons de <strong>sécurité</strong>, votre mot de passe ne peux vous êtres envoyé directement <br/> une procédure de réinitialisation est en cours </br></br> <p>Pour créer votre nouveau de passe, merci de cliquer sur le lien suivant et de suivre la procédure<br/> <a href='#'>CLIQUEZ ICI</a><br/> Si l'URL n'apparait pas comme un lien actif, veuillez SVP copier/coller ce dernier dans la barre d'adresse de votre navigateur.</p> <p>Rendez-vous sur le site <a href="#"></a></p> <p>Cette email est envoyé automatiquement, merci d'utiliser le formulaire de contact ou le forum de discussion mis à disposition pour nous contacter</p> </body> </html>"; send_mail($msg, $email); } echo json_encode($data); }
et donc j'ai ceci qui s'affiche dans la console
et coté serveur pas mieux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 jquery-3.3.1.js:9600 POST https://..../functions/rescuePass.php 500 send @ jquery-3.3.1.js:9600 ajax @ jquery-3.3.1.js:9206 (anonymous) @ rescue_pass.js:71 dispatch @ jquery-3.3.1.js:5183 elemData.handle @ jquery-3.3.1.js:4991
et je suis bien embêter parce que je ne trouve pas d'ou viens le probleme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part php | 182.18.10.14 - Losi 10/Dec/2018:23:20:45 +0000 "POST /functions/rescuePass.php" 500
je m'en remet donc au forum pour trouver une solution.
merci encore. bonne soirée.
Partager