Bonjour.
J'ai un souci.
Mon formulaire HTML qui permet à l'utilisateur de renseigner ses informations de Numéro de compte et du type de compte et son Nouveau de Mot de Passe qu'il souhaiterais modifié pour vérifier dans un premier temps s'il a déjà un compte créé dans la base de données lorsqu'il valide le Formulaire. Et si oui, il devra fourni sur la 2ème Page qui devra s'afficher est celle du Mot de Passe temporaire (OTP) généré et qui lui a été envoyé à son adresse e-mail pour vérifier s'il est vraiment le Titulaire du Compte; Mot de Passe Temporaire qu'il devra d'ailleurs confirmer sur cette 2ème Page qui s'affiche après la validation du Formulaire.
Mais de tout ça, mon souci est que l'Action du Formulaire ne fait pas pas effet et est redirigé automatiquement sur la Page d'index.php. Pourtant cela me semble bien correcte mon Code. Mais je ne sais pas pourquoi le Formulaire ne prend pas en compte l'Action qui lui été attribuée et redirige vers la Page d'Accueil (index.php) après l'avoir validé ???
Voici le Code du Formulaire:
A présent le Code pour renseigner le Mot de Passe Temporaire qui a été envoyé à l'Utilisateur par E-mail et qui servira de vérification:
Code : 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 <form action="<?php echo WEB_ROOT; ?>view/processForgotPass.php?action=changepass" method="post"> <h2 align="center">Procédure de changement de Mot de Passe</h2> <p align="center">Renseigner vos informations pour changer votre Mot de passe</p> <div class="errorMessage" align="center"><?php echo $errorMessage; ?></div> <table width="450" border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#336699" class="entryTable"> <tr id="entryTableHeader"> <td><div align="center">Informations du compte Bancaire</div></td> </tr> <tr> <td class="contentArea"> <table width="100%" border="0" cellpadding="2" cellspacing="1" class="text"> <tr> <td colspan="3"> </td> </tr> <tr class="text"> <td width="100" align="right">Numéro de compte</td> <td width="10" >:</td> <td> <span id="sprytextfield1" style="text-align:left;"> <input name="accno" type="text" tabindex="10" size="30" maxlength="30" /> <br/> <span class="textfieldRequiredMsg">Numéro de compte obligatoire.</span> <span class="textfieldInvalidFormatMsg">Numéro de compte incorrecte.</span> </span> </td> </tr> <tr> <td width="100" align="right">Type de compte</td> <td width="10" align="center">:</td> <td> <span id="spryselect_acctype"> <select name="acctype" id="acctype"> <option value="">Type</option> <option value="CA">Compte courant</option> <option value="SA">Compte épargne</option> <option value="FDA">Compte de dépôt fixe</option> </select> <br/> <span class="textfieldRequiredMsg">Type de compte obligatoire.</span> </span> </td> </tr> <tr> <td width="150" align="right">Nouveau Mot de Passe</td> <td width="10" >:</td> <td> <span id="sprypwd"> <input name="password" type="password" tabindex="10" size="30" maxlength="30" onfocus="claviersur(this)" id="keyboardd" /><br /> <span class="passwordRequiredMsg">Nouveau Mot de Passe.</span> <span class="passwordMinCharsMsg">Vous devez specifier 6 caractères minimum.</span> <span class="passwordMaxCharsMsg">Vous devez specifier 10 caractères maximum.</span> </span> </td> </tr> <tr> <td width="150" align="right">Confirmer le mot de passe</td> <td width="10" >:</td> <td> <span id="sprycpwd"> <input name="cpassword" type="password" tabindex="10" size="30" maxlength="30" onfocus="claviersur(this)" id="keyboard"/><br /> <span class="confirmRequiredMsg">Confirmation du Mot de Passe obligatoire.</span> <span class="confirmInvalidMsg">Les caractères de Mot de Passe saisis ne correspondent pas.</span> </span> </td> </tr> <tr> <td colspan="2"> </td> <td><input name="submitButton" type="submit" id="submitButton" value="Suivant ! " /></td> </tr> <tr> <td colspan="3"> Avez-vous déjà un compte ? <a href="<?php echo WEB_ROOT; ?>login.php">Connectez-vous ici.</a>. </td> </tr> </table></td> </tr> </table> <br /> </form>
Et enfin le Code de la Page d'Action (processForgotPass.php):
Code : 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 <form action="<?php echo WEB_ROOT; ?>view/processForgotPass.php?action=rptoken" method="post"> <table width="550" border="0" cellpadding="5" cellspacing="1" class="entryTable"> <tr id="listTableHeader"> <th colspan="2">Mise à jour de votre Mot de Passe</th> </tr> <tr> <td width="260" height="30" class="label"><strong>Code de Vérification d'Email </strong></td> <td height="30" class="content"> <span id="sprytf_token"> <input name="tokenpass" id="token" type="text" class="frmInputs" size="15" maxlength="15" /> <br/> <span class="textfieldRequiredMsg">Code de Vérification d'Email est obligatoire.</span> <span class="textfieldInvalidFormatMsg">Code de Vérification d'Email doit être ajouté.</span> <span class="textfieldMinCharsMsg">Code de Vérification d'Email doit comporter au minimum 6 caractères.</span> <span class="textfieldMaxCharsMsg">Code de Vérification d'Email doit comporter au maximum 8 caractères.</span> </span> </td> </tr> <tr> <td height="30" colspan="2"> <div align="center"> <input name="submitButton" type="submit" class="frmButton" id="submitButton" value="Valider" /> </div></td> </tr> </table> </form> <script type="text/javascript"> <!-- var sprytf_token = new Spry.Widget.ValidationTextField("sprytf_token", 'integer', {minChars:6, maxChars: 8, validateOn:["blur", "change"]}); //--> </script> <script src="<?php echo WEB_ROOT; ?>library/jquery.min.js"></script> <script src="<?php echo WEB_ROOT; ?>library/jquery.plugin.min.js"></script> <script src="<?php echo WEB_ROOT; ?>library/jquery.countdown.min.js"></script> <script> $(document).ready(function(){ function timerdone(){ var webRoot = '<?php echo WEB_ROOT; ?>'+'view/?v=ChangePasswd'; window.location.href = webRoot; } $('#defaultCountdown').countdown({ until: +60, compact: true, onExpiry: timerdone, format: 'MS' }); }) </script> <style> #defaultCountdown {font-family:Verdana;font-size:18px;padding:0 5px ;color:#990000;border:1px solid #993300;background-color:#FFFFCC;} </style>
Aidez-moi svp à faire savoir pourquoi la Page d'Action (processForgotPass.php) n'est pas pris en compte par les formulaires de renseigner des informations (Code 1 ci-dessus) et celui de vérification du Compte avec le Mot de Passe Temporaire (Code 2 ci-dessus) ???
Code : 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 <?php require_once '../library/functions.php'; require_once '../library/mail.php'; $_SESSION['hlbank_return_url'] = $_SERVER['REQUEST_URI']; checkUser(); $action = isset($_GET['action']) ? $_GET['action'] : ''; switch ($action) { case 'changepass' : initiateChangePass(); break; case 'rptoken' : doResetPassword(); break; default : // if action is not defined or unknown // move to main product page header('Location: index.php'); } function initiateChangePass() { $accno = (int)$_POST['accno']; $type = $_POST['acctype']; $npwd = $_POST['password']; // MP en clair $change_pass = array( 'acc_no' => $acc_no, 'acc_type' => $type, 'pass_wd' => $npwd ); //now setting the temp array into session so we can use it later... $_SESSION['change_pass'] = $change_pass; //generate and send token $tokenPass = rand(100000, 9999999); $tokenPass = strlen($tokenPass) != 6 ? substr($tokenPass, 0, 6) : $tokenPass; $_SESSION['otp_tokenpass'] = $tokenPass; //email it now. $subject = "Email Verification Code"; $to = $_SESSION['hlbank_user']['email']; $mail_data = array('to' => $to, 'sub' => $subject, 'msg' => 'otppass', 'tokenpass' => $tokenPass); send_email($mail_data); header('Location: index.php?v=TokenPass'); exit(); } function doResetPassword() { $tokenPass = (int)$_POST['tokenpass']; $s_tokenpass = (int)$_SESSION['otp_tokenpass']; if($s_tokenpass == $tokenPass) { extract($_SESSION['change_pass']); } else { header('Location: index.php?v=ChangePasswd&msg=' . urlencode('Le code de Vérification est invalide.')); exit(); } $id = $_POST['id']; $accno = (int)$_POST['accno']; $type = $_POST['acctype']; $npwd = $_POST['password']; // clair $pwd_hash = hash('sha512',$npwd); // hash512 $errorMessage = ''; $sql_st = 'SELECT u.fname, u.lname, u.email, u.is_active, u.phone, a.acc_no, a.user_id, a.pin, a.type, a.status, ad.address, ad.city, ad.state, ad.zipcode FROM tbl_users u, tbl_accounts a, tbl_address ad WHERE a.acc_no = ? AND a.type = ? AND u.id = a.user_id AND ad.user_id = u.id AND u.is_active != ?'; $result = dbQuery($sql_st,$accno,$type,"FALSE"); if (dbNumRows($result) == 1) { $row = dbFetchAssoc($result); $_SESSION['hlbank_tmp'] = $row; $_SESSION['hlbank_user_name'] = strtoupper( $row['fname'].' '.$row['lname']); $sql = "UPDATE tbl_users SET pwd = ? WHERE id = ?"; $result = dbQuery($sql,$pwd_hash,$id); $subject = "Password changed"; $to = $_SESSION['hlbank_user']['email']; // dans le mail on envoie bien le $pwd soit MDP en clair $mail_data = array('to' => $to, 'sub' => $subject, 'msg' => 'change_pwd', 'pwd' => $pwd); send_email($mail_data); //email details... header('Location: index.php?v=ChangePasswd&success=' . urlencode('Votre Mot de Passe a été changé avec succès.')); exit(); } else { $errorMessage = 'Numéro de compte ou Type de compte invalide ou Compte inactif. Veuillez réessayer encore ou contacter l\'agence la plus proche.'; } return $errorMessage; } ?>
NB: Je précise que tout ces fichier sont logés dans le Répertoire "view" c'est pourquoi vous pouvez constatez au niveau des URL des Action des Formulaire le "view" en question.
Merci de m'aider svp
Partager