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

EDI, CMS, Outils, Scripts et API PHP Discussion :

ReCaptcha: Tout correctement installé mais script non-exécuté (pas de message d'erreur)


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut ReCaptcha: Tout correctement installé mais script non-exécuté (pas de message d'erreur)
    Bonjour tout le monde,

    J'ai installé un Captcha sur le site d'un ami pour les formulaires.
    page test ici:
    http://www.ericmigom.be/fr/commande_test.php

    J'ai suivi des tutos et le Captcha s'affiche bien dans la page web. Mais, au moment d'appuyer sur le bouton 'Envoyer', le fichier php (wita_commande.php) pour l'envoi du formulaire dans lequel se trouve aussi le code de validation Captcha se lance bien mais je n'ai pas le résultat escompté; à savoir:
    -le captcha est pas bon: echo--> oups pas bon, réessayer...
    -le captcha est bon: informations du formulaire envoyées vers adresse e-mail.

    Pas de message d'erreur php....

    Le fichier 'recaptchalib.php' est au bon endroit.

    code de 'wita_commande_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
    <meta http-equiv="Refresh" content="4; url=commande_test.php">
     
     
    <?php
    $privatekey = "clef_publique_correcte";
    $resp = recaptcha_check_answer ($privatekey,
                                    $_SERVER["REMOTE_ADDR"],
                                    $_POST["recaptcha_challenge_field"],
                                    $_POST["recaptcha_response_field"]);
     
    if (!$resp->is_valid) { 
    	echo "<h3 style='color:orange;'>Oups, le captcha antispam n\'est pas valide. Veuillez recommencer. Merci.</h3>";
    }
    else{
    	$destinataire = "adresse_mail_correcte@blablabla.com";
    	$titre = "Site Eric Migom - Formulaire Commande";
     
    	$message = "Peinture(s) choisie(s): ".$_POST['chosenPainting']."\n";
    	$message .= "Nom et Prénom : ".$_POST['name']."\n";
    	$message .= "Email de la personne: ".$_POST['email']."\n";
     
    	mail ($destinataire, $titre, $message);
     
    	echo "<h3 style='color:orange;'>Votre message à bien été transmis à Eric Migom qui vous répondra.</h3>";
    	echo "<h4 style='color:mediumorchid;'>La page est redirigée automatiquement dans 5 secondes.</h4>";
    }
    ?>
    Quelle, où est l'erreur?
    Merci pour votre aide,
    V.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Salut,

    Je ne connais pas captcha, mais il serait interessant que tu fasses un , car probablement que ta condition n'est pas bonne !

    Sinon ça peut également venir de l'appel de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     recaptcha_check_answer($a, $b, $c, $d);
    Tiens nous au courant

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour ta réponse, The Goion,

    Excuse mon ignorance à l'avance mais où dois-je placer?

    J'imagine à l'entrée du php, just avantQuant à l'appel recaptcha_check_answer que tu mentionnes, il fait partie du fichier 'recaptchalib.php' télchargeable sur le site Recaptcha (recaptchalib.php) qui est standard. Crois-tu qu'il faille y changer quelque chose

    Merci pour tes lumières,

    Vh.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Salut,

    Alors pour la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     recaptcha_check_answer($a, $b, $c, $d)
    , je ne pense pas qu'elle soit en cause. L'appel que tu en fait à l'air correct.

    Sinon pour le , il faut le mettre juste avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!$resp->is_valid) ...
    puisqu'à ce moment là, $resp doit être renseigné. Ensuite tu fais le test avec une erreur et une réponse correct et tu nous dis ce qu'il y avait dans chacun des cas.

    Aussi, regardes du côté des paramètres que tu passes à la fonction, si les valeurs correspondent bien à celle qui t'on été donné sur recaptcha.net (privatekey, ...), car je doute que ta $privatekey valle "clef_publique_correcte"
    donc tu vas sur recaptcha.net tu ajoutes ton site et ça va te générer des clés du moins je pense car je n'ai jamais implémenter recaptcha

    donc en gros ton code doit ressembler à ça:
    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
     
    <meta http-equiv="Refresh" content="4; url=commande_test.php">
     
     
    <?php
    $privatekey = "cle_donnee_sur_recaptcha";
    $resp = recaptcha_check_answer ($privatekey,
                                    $_SERVER["REMOTE_ADDR"],
                                    $_POST["recaptcha_challenge_field"],
                                    $_POST["recaptcha_response_field"]);
     
    echo "resp:br/>; var_dump($resp); exit;
    
    if (!$resp->is_valid) { 
    	echo "<h3 style='color:orange;'>Oups, le captcha antispam n\'est pas valide. Veuillez recommencer. Merci.</h3>";
    }
    else{
    	$destinataire = "adresse_mail_correcte@blablabla.com";
    	$titre = "Site Eric Migom - Formulaire Commande";
     
    	$message = "Peinture(s) choisie(s): ".$_POST['chosenPainting']."\n";
    	$message .= "Nom et Prénom : ".$_POST['name']."\n";
    	$message .= "Email de la personne: ".$_POST['email']."\n";
     
    	mail ($destinataire, $titre, $message);
     
    	echo "<h3 style='color:orange;'>Votre message à bien été transmis à Eric Migom qui vous répondra.</h3>";
    	echo "<h4 style='color:mediumorchid;'>La page est redirigée automatiquement dans 5 secondes.</h4>";
    }
    ?>
    Tiens nous au courant

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Encore Merci pour ta réponse rapide, The Goion!

    Alors voilà ce que j'ai fait:
    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
    <meta http-equiv="Refresh" content="4; url=commande_test.php">
     
     
    <?php
    $privatekey = "cle_privee";
    $resp = recaptcha_check_answer ($privatekey,
                                    $_SERVER["REMOTE_ADDR"],
                                    $_POST["recaptcha_challenge_field"],
                                    $_POST["recaptcha_response_field"]);
     
    echo "resp:<br />";
    var_dump($resp); exit;
     
     
    if (!$resp->is_valid) { 
    	echo "<h3 style='color:orange;'>Oups, le captcha antispam n\'est pas valide. Veuillez recommencer. Merci.</h3>";
    }
    else{
    	$destinataire = "adresse_mail_correcte@blablabla.com";
    	$titre = "Site Eric Migom - Formulaire Commande";
     
    	$message = "Peinture(s) choisie(s): ".$_POST['chosenPainting']."\n";
    	$message .= "Nom et Prénom : ".$_POST['name']."\n";
    	$message .= "Email de la personne: ".$_POST['email']."\n";
     
    	mail ($destinataire, $titre, $message);
     
    	echo "<h3 style='color:orange;'>Votre message à bien été transmis à Eric Migom qui vous répondra.</h3>";
    	echo "<h4 style='color:mediumorchid;'>La page est redirigée automatiquement dans 5 secondes.</h4>";
    }
    ?>
    Note: évidemment, la valeur de ma clef est correcte, j'avais juste fait exprès de ne pas la réveler en la remplaçant par autre chose... Mais c'est bien la bonne que j'ai mise en vrai
    Tout comme l'e-mail de "mon client" n'est pas "adresse_mail_correcte@blablabla.com"

    Malheureusement, le résultat est toujours le même:
    le php se lance, page blanche, retour vers la page web du formulaire sans message d'erreur ni envoi des données remplies vers l'email...

    Par contre, j'ai remarqué que quand j'affiche la source de wita_commande.php; j'obtiens ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Refresh" content="4; url=commande_test.php">
    comme si, la totalité du code php était ignoré.

    Merci,
    Vh.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Il est normal que le php n'apparaisse pas dans le code source de la page produit par le navigateur. Le php est un langage serveur. Du coup le serveur php exécute le code php et retourne du code interprétable par le navigateur (html).

    Mais tu devrais enlever la redirection (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Refresh" content="4; url=commande_test.php">
    ) pour faire tes tests dans un premier temps

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par The Goion Voir le message
    Il est normal que le php n'apparaisse pas dans le code source de la page produit par le navigateur. Le php est un langage serveur. Du coup le serveur php exécute le code php et retourne du code interprétable par le navigateur (html).
    OK sur ce coup, j'ai l'air bête

    J'ai fait comme tu as dit mais comme je m'y attendais, ça ne donne aucun résultat:... page blanche, pas de output de la var dump.

    Ne serait-ce pas un problème du côté de l'hébergeur? Version php supportée ou quelque chose comme ça? ...

    Merci encore pour ton aide!

    Vh?

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Salut,

    oui si tu n'as même pas un retour dans le genre tu dois avoir un soucis sur le serveur qui supporte mal quelque chose !

    Essaies de voir dans les logs quelle erreur il y a.

    Aussi, fait un phpinfo pour vérifier l'état de error_reporting et si nécessaire redéfini sa valeur à E_ALL dans un php.ini, ça affichera les erreurs !

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Salut,

    J'ai demandé aide et renseignements auprès du Support de mon hébergeur qui s'est montré très coopératif;
    Voici la réponse - le log d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <br /><b>Fatal error</b>: Call to undefined function: recaptcha_check_answer() in <b>/home/ericmigo/www/fr/wita_commande.php</b> on line <b>4</b><br />]
    Il m'a aussi dit: "vous avez omis d'inclure le fichier contenant le captcha dans la page qui doit en gérer la validation."

    Aurais-je fait quelque chose de faux? Il me semble que je place bien la librairie Recaptcha dans la page web.php. Et qu'un clic sur le bouton 'envoyer', le php devrait et valider le Captcha et envoyer les infos par mail via action="wita_commande.php". Est-ce du au fait que le reCaptcha et le php d'envoi/validation ne sont pas sur la même page? ou que j'appelle mal la fonction au Submit?

    Voici mon formulaire dans ma page web.php (www....../fr/commande_test.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
    <td>
    						<form method="post" action="wita_commande.php" name="form1" id="form1" onSubmit="var resultat=VerifChampsObligatoires(); return resultat;">
    						<p class="datum">Remplissez ce formulaire en indiquant le(s) nom(s) de la ou des peintures voulue(s) ainsi que l'ann&eacute;e de la galerie. Ensuite, cliquez sur 'Envoyer'. Merci! </p>
    						<hr />
    						<p>Indiquez la ou les peinture(s) oeuvres que vous désirez commander et l'ann&eacute;e de la galerie. </p>
    						<textarea name="chosenPainting" id="chosenPainting" rows="3" class="infos">exemple: Waiting for some action 2008</textarea><br />
    						<p>Votre nom et pr&eacute;nom </p>
    						<textarea name="name" rows="2" class="infos"></textarea><br />
    						<p>Votre adresse &eacute;lectronique </p>
    						<textarea name="email" rows="2" class="infos"></textarea>
    						<div style="width: 93%; margin: 0 auto;">
    						<?php
    							require_once('recaptchalib.php');
    							$publickey = "xxxxxxxxxxxyyyyyyyy";
    							echo recaptcha_get_html($publickey);
    						?>
    						</div>
    						<p><input name="send" type="submit" value="Envoyer" onClick="this.submit();" />
    						<input name="send" type="reset" value="Annuler" />
    						</p>
    						</form>
    					</td>
    Note: j'ai caché volontairement ma clé mais celle-ci est bien correcte en réalit" ;-)

    Merci!!!

    Vh.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Euh... oui effectivement j'avais pas fait gaffe au début, mais il manque l'inclusion du fichier dans ton fichier wita_commande.php ^^

    essaies de le réinclure dans ce fichier et tiens nous au courant

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Merci, The Goion!
    ça marche effectivement. Je crois que j'avais rien compris au tuto ou il y a une partie que j'ai skippé, en tous cas.
    Le problème est que le Javascript qui vérifie le 'remplissage' des champs du formulaire n'est plus exécuté.
    Y a t'il moyen de faire les deux: Captcha et javascript
    D'appeler les deux en même temps (insérer javascript dans php??).

    Merci encore et désolé d'insister!!!....
    Et pour ma naïveté ;-)
    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
    <head>...
    ...
    <script language="javascript"> 
     
    <!--
    function VerifChampsObligatoires()
    {
     var chaine_erreur = "";
     if (window.document.form1.chosenPainting.value == "")
      {chaine_erreur += "Prière d'indiquer le nom de la peinture et l'année.\n";}
     if (window.document.form1.name.value == "")
      {chaine_erreur += "Merci d'indiquer votre nom.\n";}
     if (window.document.form1.email.value == "")
      {chaine_erreur += "Merci d'indiquer votre adresse électronique.\n";}
     if (chaine_erreur == "")
      {return true;}
     else{chaine_erreur = "Information(s) non-remplie(s):\n" + chaine_erreur;
      alert(chaine_erreur);
      return false;
      }
    }
    -->
    </script>
    ...
    ...
    </head>
    <body>
    ...
    <table id="form_commander">
        <tr>
         <td>
          <form method="post" action="wita_commande.php" name="form1" id="form1" onSubmit="var resultat=VerifChampsObligatoires(); return resultat;">
          <p class="datum">Remplissez ce formulaire en indiquant le(s) nom(s) de la ou des peintures voulue(s) ainsi que l'ann&eacute;e de la galerie. Ensuite, cliquez sur 'Envoyer'. Merci! </p>
          <hr />
          <p>Indiquez la ou les peinture(s) oeuvres que vous désirez commander et l'ann&eacute;e de la galerie. </p>
          <textarea name="chosenPainting" id="chosenPainting" rows="3" class="infos">exemple: Waiting for some action 2008</textarea><br />
          <p>Votre nom et pr&eacute;nom </p>
          <textarea name="name" rows="2" class="infos"></textarea><br />
          <p>Votre adresse &eacute;lectronique </p>
          <textarea name="email" rows="2" class="infos"></textarea>
          <div style="width: 93%; margin: 0 auto;">
          <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=my_key"></script>
     
     <noscript>
        <iframe src="http://www.google.com/recaptcha/api/noscript?k=my_key" height="300" width="500" frameborder="0"></iframe><br/>
        <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
        <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
     </noscript>      </div>
          <p><input name="send" type="submit" value="Envoyer" onClick="this.submit();" />
          <input name="send" type="reset" value="Annuler" />
          </p>
          </form>
         </td>
        </tr>
       </table>
    ...
    </body>

    Vh.

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Salut,

    Le JS et le PHP sont totalement indépendant... le javascript étant sur le client et le php sur le serveur.
    Il est donc tout à faitpossible d'éxécuter le javascript bien sur, mais le fait qu'il ne fonctionne pas n'est pas lié à l'utilisation du captcha.

    De plus concernant l'appel du JS dans le on submit, tu devrais l'écrire comme cel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return VerifChampsObligatoires();
    Eventuellement tu peux ajouter des alert dans la fonction pour vérifier son bon fonctionnement

Discussions similaires

  1. Formule Excel ok mais VBA non exécutable
    Par dutronephilippe dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/03/2014, 10h31
  2. [WS 2003] Domaine LOGON Script non exécuté
    Par Gandahar dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 16/05/2012, 09h25
  3. [Dojo] DOJO - Chrome - script non exécuté
    Par cougarg dans le forum Bibliothèques & Frameworks
    Réponses: 18
    Dernier message: 02/07/2010, 15h05
  4. driver jdbc installé mais mon non trouvé
    Par jashy dans le forum JDBC
    Réponses: 1
    Dernier message: 09/04/2010, 19h52
  5. Fichier ajouter mais ne s'exécute pas
    Par bruce207 dans le forum Installation, Déploiement et Sécurité
    Réponses: 12
    Dernier message: 31/05/2008, 12h14

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