Voir aussi
Dans la même rubrique :
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
Installer un script PHP pour les nuls
Page contact en PHP 1/3
Page contact en PHP 2/3
Menu de navigation sans JavaScript
Gestion d’une rubrique... en attendant SPIP
Créer un forum à l’aide de phpBB
Page Erreur 404 en PHPDu même auteur :
Reprendre un document Word
Les Centres de santé
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Lire nos fichiers de syndication
Page contact en PHP 3/3
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Javascript : n’oubliez pas Mac OS !
Positionnement fixe... même avec Internet Explorer !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Quand JavaScript est désactivé... 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Exécuter un Javascript dans une page SPIP
Astuce pour les images fréquemment utilisées
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
Editer plusieurs fichiers de syndication 3/3
Editer plusieurs fichiers de syndication 2/3
Le web structuré et sa présentation
Analyser les réponses à une liste de questions
Un lecteur RSS pour votre site 1/2
Page contact en PHP 2/3
Réaliser un formulaire de contact (4/4)
Un Editeur RSS pour votre site 1/2
Syndication, comment s’y retrouver
Menu de navigation sans JavaScript
Exécuter un Javascript dans une page SPIP
Réaliser un formulaire de contact (2/4)
xhtml - 4 : Les entités
Quand JavaScript est désactivé... 1/2
Page Erreur 404 en PHP
Un lecteur RSS pour votre site 2/2
Quand JavaScript est désactivé... 2/2
Tri et Histogramme
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Quiz en PHP 3/3
Conseils pour débuter un site web
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Javascript : n’oubliez pas Mac OS !
Utilisation de la classe easyRSS
Réaliser un formulaire de contact (5/4)
Créer un forum à l’aide de phpBB
Un serveur dédié pour les nuls
Belles icônes pas chères !
Quiz en PHP 1/3
Publication Spip : forme et typographie
Initiation au xhtml - 2
Proposer plusieurs styles pour votre site
Comment intégrer Snap Shots à Rapidweaver ?
Comment faire migrer son site ?
Astuce pour les images fréquemment utilisées
Installer un script PHP pour les nuls
Créer une liste de QCM
Positionnement fixe... même avec Internet Explorer !
Page contact en PHP 1/3
Réaliser un formulaire de contact (3/4)
Menu dépliant pour les rubriques
Quiz en PHP 2/3
Réaliser un formulaire de contact (1/4)
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Initiation au xhtml - 1
Contrôler l’accès d’une partie du site avec .htaccess
Un Editeur RSS pour votre site 2/2
Etablir un questionnaire statistique en ligne
Ecrire ce qu’on veut dans SPIP
Editer plusieurs fichiers de syndication 1/3
Gestion d’une rubrique... en attendant SPIP
Soigner en ligne, un art impossible ?
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Webmasters : Comment mieux se référencer ?
La Netiquette des forums
La syndication de contenu RSS
Lire nos fichiers de syndication
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Page contact en PHP 2/3
Editer plusieurs fichiers de syndication 2/3
Quand JavaScript est désactivé... 1/2
Page contact en PHP 1/3
Quiz en PHP 2/3
Astuce pour les images fréquemment utilisées
Quiz en PHP 3/3
Editer plusieurs fichiers de syndication 1/3
Gestion d’une rubrique... en attendant SPIP
Javascript : n’oubliez pas Mac OS !
Syndication, comment s’y retrouver
Quiz en PHP 1/3
Proposer plusieurs styles pour votre site
Menu de navigation sans JavaScript
Exécuter un Javascript dans une page SPIP
Editer plusieurs fichiers de syndication 3/3
Quand JavaScript est désactivé... 2/2
Menu dépliant pour les rubriques
Page Erreur 404 en PHP
Installer un script PHP pour les nuls
Positionnement fixe... même avec Internet Explorer !
Ecrire ce qu’on veut dans SPIP
Afficher plusieurs flux RSS/Atom sur une page
La syndication de contenu RSS
Conseils aux rédacteurs
Présentation de l’espace rédacteurs
Lire nos fichiers de syndication
Afficher un fil RSS/Atom sur votre site 1/3
Ecrire ou modifier un article
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Reprendre un document Word
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Placer une image dans un article
Editez vos flux avec Fil_LE 1/2
Joindre un document à un article
Joindre un logo à un article
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Scripts PHP
Page contact en PHP 3/3
Dans un soucis d’accessibilité pour ceux qui ont une mauvaise vue, je n’ai pas voulu d’un captcha visuel ; mon choix s’est donc porté sur un script de FredoMkb [1] : CaptchaGuest version 1.1.0 script dont voici l’adaptation pour une page contact [2].
Le but est d’afficher un petit captcha textuel de sécurité afin d’autoriser un visiteurs (guest) à envoyer son message tout en empêchant l’accès des robots de spam.
Une question, tirée au hasard parmis 4 listes disponibles demande à l’utilisateur de noter la bonne reponse dans un champ dédié.
Si la réponse est correcte lors de la validation, le message sera accepté et envoyé, dans le cas contraire, un avertissement s’affichera invitant l’utilisateur à corriger le résultat proposé.
Personnalisations : Vous pouvez modifier et personnaliser certaines données utilisées, comme la liste des questions posées, le nombre de tentatives autorisées ainsi que la liste des conseils prodigués aux utilisateurs étourdis...
Ces éléments sont identifiables par un commentaire contenant la mention "(à adapter selon vos besoins)", et ils sont desormais tous regroupes dans le fichier PHP nommé "CaptchaGuestValeurs.php".
Sécurité : Le résultat de la question affichée, choisie au hasard, qui permet de tester l’exactitude de la réponse fournie, est conservée dans une variable de session.
De plus, les questions affichées sont converties en codes Ascii Html, correspondant au jeux de caractères à la norme ISO 8859-1
AVERTISSEMENT : Malgré les différents mécanismes de sécurité utilisés, cette mod ne peut en aucun cas être considérée comme une méthode infaillible contre les attaques de certains robots de spams sofistiqués.

L'archive ci-jointe comprend 3 fichiers :
contact.php qui reprend l’exemple de page contact décrite dans le premier article, avec les modifications nécessaires au fonctionnement du captcha,
CaptchaGuest.php qui contient les principales fonctions du script,
CaptchaGuestValeurs.php où sont les listes de questions à poser pour valider le Captcha ainsi que les différentes options de traitement.
Ces fichiers doivent être dans le même répertoire [4].
Voici les modifications du code de contact.php par rapport à la version sans captcha décrite dans l’article Page contact classique :
au début de la page, on inclue le fichier CaptchaGuest.php :
<?php |
la fonction d’affichage du formulaire est modifiée pour permettre l’affichage des questions :
function formulaire($Nom="", $Profession="", $Email="", $Message="", $captcha) { |
l’affichage de la question et du champ de réponse est ajoutée au dessus du bouton d’envoi :
<td width="80%"><center> |
avant d’envoyer le mail, on s’assure qu’il y a bien une réponse à la question anti-spam :
if (empty($_POST['captcha'])) { |
si la réponse envoyée n’est pas correcte, on envoie un message d’information :
if ($_POST['captcha']) { |
s’il y a une erreur, le message n’est pas envoyé et on réaffiche le formulaire :
if ($erreur==1) { |
si la réponse est correcte, on vide les variables de session et on envoie le message (la suite du script est inchangée) :
else { |
[1] Ce script est une adaptation d’une contribution de Vincent Garnier sur les forums de PunBbFr.
[2] Je n’ai pas conservé la possibilité d’enregistrer les tentatives de post du script initial.
[3] Je reprends ici les explications de FredoMkb.
[4] A moins de modifier le code du script pour indiquer le chemin au moment de l’inclusion des fichiers.
Bonjour, quelqu’un a-t-il ce script installé sur son site ? car j’aimerais le tester pour voir si je retrouve les mêmes problèmes que chez moi (incompatibilité avec IE et Netscape et problème avec le 0)
merci d’avance. Claude
bonjour,
j’ai déjà installé le formulaire "php 1/3 qui a fini par fonctionner après 2 changements
if (empty($vNom) || empty($Message) || empty($Email)) echo "
Vous n’avez pas complété toutes les zones :
" ; $erreur=1 ;
j’ai dû remplacer $Message par $vMessage et $Email par $vEmail , sinon je me retrouvais systématiquement avec l’erreur : vous n’avez pas complété toutes les zones
maintenant avec ce formulaire (3/3), en refaisant les mêmes corrections, le script considère toutes mes réponses à la question de sécurité comme fausses (sauf si je désactive les 4 lignes du test
// if ($captchaRepRes[0]) // echo $captchaRepRes[1] ; // $erreur=1 ; //
mais, évidemment je ne profite plus du test. mais les messages sont envoyés (et reçus) ce qui signifie que le script fonctionne sauf le test.
avez-vous une idée ?
c’est toujours moi,
je tourne et retourne la question et je constate après changement des valeurs que c’est le test :
$messageOk = 0 ; $reponses = array_values($captchaList) ; // Si la reponse n’est pas correcte, on affiche un message d’information if ($reponses[$_SESSION[’Captcha_Index’]] != $captchaRepUsr) $messageOk = 1 ;
qui répond toujours une valeur = 1 (pour $messageOk), et donc la réponsse à la question est toujours fausse. pourquoi ?
ou plutôt : comment ? comment dois-je chercher la façon dont la comparaison des deux variables n’est jamais bonne ?
encore un petit détail qui peut aider à comprendre le problème :
quand j’inscris plusieurs fois des réponses (elles sont toutes considérées comme mauvaises), le compteur de tentatives reste à 1.
je n’ai d’ailleurs ni “provenance” ni “adresse ip” ni “navigateur” dans les messages reçus
minuscule détail :
la réponse "0" à Captcha n’est pas considérée comme une réponse :
Vous n’avez pas complété le Captcha Anti-Spam :
Re-bonjour ...enfin réussi...
après maintes recherches, j’ai téléchargé les 2 fichiers originaux de captcha pour le comparer avec le votre, et à part les lignes de commentaire, je n’ai trouvé qu’une différence : le log (pour le logfile) à 0 au lieu de 1(dans le fichier CaptchaGuestValeur ligne 16)
j’ai d’abord mis les autres fichiers (CaptchaGuest et CaptchaGuestValeurs) à la place des premiers (après avoir renomme ceux-ci) et tout à fonctionné, puis j’ai remis les originaux (tels que téléchargés) et j’ai mis 1 à la valeur du log et tout a également fonctionné. mais ensuite j’ai remis 0 et tout fonctionnait encore.
donc je n’y comprends rien mais tout s’est mis à fonctionner après cette manip.
j’ai gardé les fichiers originaux qui ne fonctionnaient pas en les renommant et maintenant ils fonctionnent.
je suis donc désolé pour tout ce courrier. le seul point qui ne fonctionne toujours pas est la valeur 0 à la réponse chaptsa qui n’est pas reconnue comme une réponse, ainsi que l’adresse IP, la provenance et le naviguateur qui n’apparaissent pas
Si quelqu’un a une idée ou peut me confirmer le problème du 0 ?
Bonjour Dr,
utilisateur de votre formulaire sur mes sites, je viens de découvrir et de mettre en ligne le captcha ...
Evidement il n’y a pas de problème dans le fonctionnement sauf un petit message d’erreur que je n’arrive pas à cerner :
Warning : Missing argument 10 for formulaire() in .../contact.php on line 62
La ligne 62 étant chez moi la ligne de la function formulaire (avec ses variables + celle du captcha)
Si toutefois vous aviez une idée de l’origine de ce message. (j’ai passé en revue les champs et variables de mon formulaire ...)
Cordialement Manuel
Bonjour Dr,
je me permets d’apporter une toute petite précision dans l’utilisation du script de captcha.
Dans le fichier "CaptchaGuest.php" une session est ouverte.
L’ouverture de session doit toujours être le premier ordre php dans un fichier donc si comme moi vous avez d’autre "include" dans vos fichiers, la ligne de code :
<?php include('CaptchaGuest.php'); // inclu le script du captcha ?>
Devra se positionner en toute première ligne de votre fichier sous peine de recevoir un joli message d’erreur.
Cordialement Manuel.