IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

l'Action PHP de mes Formulaires ne se déclenche pas ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut l'Action PHP de mes Formulaires ne se déclenche pas ?
    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:

    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">&nbsp;</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">&nbsp;</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>
    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
     
    <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>
    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
    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;
    }
     
    ?>
    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) ???

    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    On ne va pas décortiquer tes codes...

    1- commente la ligne pour éviter la redirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // header('Location: index.php');
    2- Débogage de base :
    • Affiche les variables (echo...), les array (var_dump) pour vérifier les données reçues
    • ...

    Bref : essaie de localiser le problème.

    3- je commencerais par là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $action = isset($_GET['action']) ? $_GET['action'] : '';
    echo '$action : ' . $action;

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Déjà grand merci. Mais je voudrais savoir comment localiser mon problème dans mon cas ??? Dois-je faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    print_r(???); // Que dois-je mettre dans la parenthèse du print_r ?
    echo '</pre>';
    ???

  4. #4
    Membre régulier Avatar de Yvan L
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 80
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Tu utilises le post dans tes formulaires et tu essayes de récupérer les valeurs d'un get !
    Le programme passe donc par le default du switch. (header('Location: index.php')

    Remplace le method="post" par un method="get", ou le isset($_GET['action']) par un isset($_POST['action']).

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Ok merci je vais vérifier.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1-
    <form action="<?php echo WEB_ROOT; ?>view/processForgotPass.php?action=changepass" method="post">
    Dans les 2 formulaires, on récupère bien l'action par $_GET['action'];.

    2- Le DEBOGAGE DE BASE consiste (entre autres) à AFFICHER les données, à des endroits STRATÉGIQUES, pour savoir ce qu'elles contiennent :
    • echo pour des variables
    • var_dump pour des array

    A toi de les placer judicieusement.

    Par exemple ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $action = isset($_GET['action']) ? $_GET['action'] : '';
    echo '$action = '.$action;
    switch ($action) {
    ...
    Ca affiche quoi ?

  7. #7
    Membre régulier Avatar de Yvan L
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 80
    Points : 109
    Points
    109
    Par défaut
    Désolé, cheboy et jreaux62, j'avais regardé trop rapidement !

  8. #8
    Membre régulier Avatar de Yvan L
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 80
    Points : 109
    Points
    109
    Par défaut
    La fonction initiateChangePass() redirige l'utilisateur vers index.php quand il a validé le premier formulaire...

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Yvan L Voir le message
    La fonction initiateChangePass() redirige l'utilisateur vers index.php quand il a validé le premier formulaire...
    Merci Yvan L pour ta réponse.
    Mais que me suggères-tu ???

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Yvan L Voir le message
    La fonction initiateChangePass() redirige l'utilisateur vers index.php quand il a validé le premier formulaire...
    Merci Yvan L pour ta réponse.
    Mais que me suggères-tu ???
    Car hier soir, j'ai pu faire exactement comme jreaux62 comme l'as conseillé mais en Retour, je ne vois rien s'afficher. Ça continue toujours et encore la redirection vers la Page d'Accueil c'est-à-dire le même problème continue malgré les conseils de jreaux62.

    Mais que me suggères-tu Yvan L ???

  11. #11
    Membre régulier Avatar de Yvan L
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 80
    Points : 109
    Points
    109
    Par défaut
    j'ai pu faire exactement comme jreaux62 comme l'as conseillé mais en Retour, je ne vois rien s'afficher
    Normal, le passage d'une page à l'autre est trop rapide. Tu peux mettre un exit sous le echo suggéré par jreaux62 pour contrôler.

    Mais que me suggères-tu
    Dans la fonction initiateChangePass(), modifie le "header location" pour qu'il affiche le second formulaire.

Discussions similaires

  1. [php/mysql] Aidez moi svp.
    Par PegMiNii dans le forum Requêtes
    Réponses: 10
    Dernier message: 30/05/2006, 15h52
  2. J'ai du mal à me décider ! Aidez moi svp :)
    Par VanHelsing dans le forum Mobiles
    Réponses: 18
    Dernier message: 01/06/2005, 14h59
  3. Je vois pas d'où vient mon erreur!! Aidez moi SVP
    Par liliboms dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/04/2005, 08h25
  4. Réponses: 29
    Dernier message: 11/05/2004, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo