Bonjour,

J'essaye depuis hier d'installer ReCaptcha sur mon site en local avant de l'installer en live sur le site du Collectif "Ressources".

J'ai suivi votre tutoriel et j'ai obtenu les clefs publics et privées pour ce site. Comme toutes les clefs fonctionnent en local, j'ai voulu faire l'essai d'abord dans mon environnement de test.

J'ai téléchargé le plugin.

J'ai ajouté le bout de code côté client au niveau du formulaire et côté serveur dans la page PHP qui gère la vérification.

Rien n'y fait. Dès que j'introduis le code côté client ma page s'affiche de façon incomplète sans mise en forme ni affichage de l'image du recaptcha.

Ce site est construit à partir d'une fichier index.php et d'un .htaccess et d'une règle de réécriture comme ceci :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]

J'utilise un template et les pages sont ensuites insérées comme ceci :

<?php
/* Initialisation des constantes */
define("DS", "/");
define("LOCALHOST", "http://".$_SERVER'HTTP_HOST']);
define("WEBROOT", LOCALHOST.dirname($_SERVER'SCRIPT_NAME'])."/");
/* Si aucune valeur n'est passé par l'URL, */
/* rediriger vers la page index */
if(!isset($_GET"p"])){
    $_GET"p"]="index";
}
/* Si une valeur est passée et que le fichier n'existe pas, */
/* rediriger vers une page 404 */
if(!file_exists("content/".$_GET"p"].".php")){
    $_GET"p"]="404";
}
/* Démarrer la séquence de blocage d'envoie des données */
ob_start();
/* Inclusion de la page */
include "content/".$_GET"p"].".php";
/* Les données sont stockées dans la variable $content */
$content = ob_get_contents();
ob_end_clean();
/* Inclusion du template */
include "template.php";
?>

Toutes mes pages sont dans le répertoire page à l'intérieur du répertoire content. La librairie recaptchalib.php est dans le répertoire captcha dans le répertoire page. J'ai essayé avec un .htaccess dans le répertoire captcha en mettant un RewriteEngine off. Pas de changement.

Côté client, le formulaire avec le code recaptcha donne ceci :

<form id="envoyerform" method="post" action="http://collectifressources.com/page/envoyerform">
                <fieldset>
                    <p class="nofirst">
                        <label for="nom">Votre nom</label><br />
                        <input type="text" name="nom" id="nom" maxlength="30" size="30" tabindex="10" value="" />
                        <span class="notification_form">au moins deux caractères</span>
                    </p>
                    <p>
                        <label for="mel">Votre courriel</label><br />
                        <input type="text" name="mel" id="mel" maxlength="30" size="30" tabindex="30" value="" />
                        <span class="notification_form">adresse mel non valide</span>
                    </p>
                </fieldset>
                <fieldset>
                    <label for="message">Votre message</label><br />
                    <textarea name="commentaire" id="commentaire" rows="3" cols="80" tabindex="80" onfocus="if(this.value=='Tapez votre texte ici.'){this.value='';}">Tapez votre texte ici.</textarea>
                </fieldset>
                <p class="submit">
                    <?php
                        require_once('captcha/recaptchalib.php');
                        $publickey = "ici j'ai ma clef publique";
                        echo recaptcha_get_html($publickey);
                    ?>
                    <input type="submit" name="envoye" value="Envoyer" class="onsubmit" />
                </p>
        </form>

Je ne parle pas du côté serveur pour l'instant car je n'en suis pas là. La partie serveur sera placé en tête du fichier envoyerform.php.

Je n'arrive pas à comprendre d'où vient le problème.

Votre assistance sera grandement appréciée.

Cordialement.

6 réponses


flo3376
Réponse acceptée

je ne vois pas de div recaptcha
essaie de remplacer

<?php
                        require_once('captcha/recaptchalib.php');
                        $publickey = "ici j'ai ma clef publique";
                        echo recaptcha_get_html($publickey);
                    ?>

par ça

<?php
require_once('captcha/recaptchalib.php');
$publickey = "ici j'ai ma clef publique";
?>
<div id="recaptcha_div"><?= recaptcha_get_html($pulickey);?></div>

tiens nous au courrant

philippe.idlas@free.fr
Auteur
Réponse acceptée

Bonjour,

Je reviens vers vous tardivement car j'ai été pris par d'autres priorités depuis. J'ai à nouveau du temps. J'ai appliqué votre changement mais rien n'y fait. Non seulement l'affichage recaptcha ne se fait pas mais en plus le template ne s'affiche pas. Dès que j'enlève

<?php
require_once('captcha/recaptchalib.php');
$publickey = "ici j'ai ma clef publique";
?>
<div id="recaptcha_div"><?= recaptcha_get_html($pulickey);?></div>

ces lignes de mon code tout refonctionne.

Une idée ?

Cordialement.

Kaotic
Réponse acceptée

Bonjour,

Regardez dans le fichier "error.log" de votre apache2, ou de votre projet (Suivant la configuration le fichier peu changer.)

Cordialement,
Kaotic.

philippe.idlas@free.fr
Auteur
Réponse acceptée

Bonsoir Kaotic,

Bonne pioche. Le fichier recaptchalib.php était en lectiure seul. En changeant les permissions j'ai pu avoir l'affichage du recaptcha. C'est une première étape. Il me reste maintenant à installer la partie serveur pour la vérification et le réaffichage selon. Je considère que cette question est résolue. ;)

Cordialement.

Bonjour,

Personne pour me donner une idée ?

Cordialement.

Bonjour Kaotic,

J'ai besoin de refaire les tests car cela date un peu maintenant et je n'ai pas progressé sur ce problème. Je m'y remets lundi prochain. En tout cas merci pour me relancer là-dessus. Bon week-end et je reviens vers vous en début de semaine prochaine.

Cordialement.