Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2012, 20h14   #1
Invité régulier
 
Vincent Henin
Inscription : juin 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Vincent Henin
Localisation : Belgique

Informations forums :
Inscription : juin 2010
Messages : 40
Points : 8
Points : 8
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 :
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.
vhenin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 08h39   #2
Membre régulier
 
Homme
Développeur Web
Inscription : mai 2007
Messages : 101
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 101
Points : 79
Points : 79
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 :
 recaptcha_check_answer($a, $b, $c, $d);
Tiens nous au courant
The Goion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 13h25   #3
Invité régulier
 
Vincent Henin
Inscription : juin 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Vincent Henin
Localisation : Belgique

Informations forums :
Inscription : juin 2010
Messages : 40
Points : 8
Points : 8
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.
vhenin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 10h44   #4
Membre régulier
 
Homme
Développeur Web
Inscription : mai 2007
Messages : 101
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 101
Points : 79
Points : 79
Salut,

Alors pour la fonction
Code :
 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 :
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 :
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
The Goion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 21h17   #5
Invité régulier
 
Vincent Henin
Inscription : juin 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Vincent Henin
Localisation : Belgique

Informations forums :
Inscription : juin 2010
Messages : 40
Points : 8
Points : 8
Encore Merci pour ta réponse rapide, The Goion!

Alors voilà ce que j'ai fait:
Code :
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 :
<meta http-equiv="Refresh" content="4; url=commande_test.php">
comme si, la totalité du code php était ignoré.

Merci,
Vh.
vhenin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 09h00   #6
Membre régulier
 
Homme
Développeur Web
Inscription : mai 2007
Messages : 101
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 101
Points : 79
Points : 79
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 :
<meta http-equiv="Refresh" content="4; url=commande_test.php">
) pour faire tes tests dans un premier temps
The Goion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 21h21   #7
Invité régulier
 
Vincent Henin
Inscription : juin 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Vincent Henin
Localisation : Belgique

Informations forums :
Inscription : juin 2010
Messages : 40
Points : 8
Points : 8
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?
vhenin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2012, 07h40   #8
Membre régulier
 
Homme
Développeur Web
Inscription : mai 2007
Messages : 101
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 101
Points : 79
Points : 79
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 !
The Goion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 13h52   #9
Invité régulier
 
Vincent Henin
Inscription : juin 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Vincent Henin
Localisation : Belgique

Informations forums :
Inscription : juin 2010
Messages : 40
Points : 8
Points : 8
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 :
<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 :
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.
vhenin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 20h25   #10
Membre régulier
 
Homme
Développeur Web
Inscription : mai 2007
Messages : 101
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 101
Points : 79
Points : 79
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
The Goion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2012, 10h41   #11
Invité régulier
 
Vincent Henin
Inscription : juin 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Vincent Henin
Localisation : Belgique

Informations forums :
Inscription : juin 2010
Messages : 40
Points : 8
Points : 8
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 :
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.
vhenin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2012, 21h46   #12
Membre régulier
 
Homme
Développeur Web
Inscription : mai 2007
Messages : 101
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2007
Messages : 101
Points : 79
Points : 79
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 :
return VerifChampsObligatoires();
Eventuellement tu peux ajouter des alert dans la fonction pour vérifier son bon fonctionnement
The Goion est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h04.


 
 
 
 
Partenaires

Hébergement Web