Accueil > Forum > > > > formulaire php htlm / captcha
formulaire php htlm / captcha
mardi 15 février 2011 à 20:36:18 |
formulaire php htlm / captcha

djbabou
|
Bonjour, a tous
J'ai développé un formulaire dans lequel j'ai intégrer un captcha image. Comme tous captcha normalement construit, après soumission du formulaire, une vérification se fait afin de déterminer si le code saisi est correct ou pas.
Ce que je cherche a faire c'est cela :
si code est bon -> on enregistre dans bd ->on envoie mail au client et a l'admin
sinon, si code erroné -> on redirige vers le formulaire remplis avec les infos saisies précédemment, et le champs captcha à vide.
Pour valider quand le captcha est correct, c'est bon, par contre quand ce n'est pas le cas je c plus "???".
J'ai vu sur le net ->
utilisation des sessions ( pas trouvé de bon tuto )
utilisation de xmlhttprequst ( pas trouvé de bon tuto )
Connaissez vous d'autre moyen de générer un retour avc en plus la retransmission des infos pour éviter qu'on ressaisisse les même infos ?
Ou du moins avez vous des pistes quand aux tutos sur ces deux méthodes ?
Merci
|
|
mardi 15 février 2011 à 20:51:32 |
Re : formulaire php htlm / captcha

cod57
|
Réponse acceptée !
bonsoir
tu peux
dans le form de départ
form.php
<?php if(isset($_GET['message']) && $_GET['message']==1){
$message="erreur code captcha";
echo $message; /*echo ici ou ailleurs dans la page*/
}else{
$message=NULL;
}
/*pour chaque input textarea du form ...*/
<input type="text" name="champs"
value="<?php if(isset($_POST['champs'])){
echo $_POST['champs'];
}else{
echo "";
}
?> "/>
puis si ton captcha est pas bon dans la pageverif.php
header('Location: form.php?message=1');exit;
a++
|
|
mardi 15 février 2011 à 21:37:42 |
Re : formulaire php htlm / captcha

djbabou
|
Merci pour ta réponse !
Malheureusement, quand je l'applique à mon script, ben sa ne marche malheureusement pas tout a fait!
J'ai bien la redirection après validation, mais mes champs eux sont vides si le code est erroné.
J'ai mis ceci :
<input type="text" size="20" maxlength="50" id="nom" name="newsletter[nom]" value="<?php if(isset($_POST['nom'])){echo $_POST['nom'];}else{echo "";}?>" />
Une erreur à ce niveau selon toi ? Peut être que je devrai d'abord récupérer toutes mes valeurs dans des POST quand je suis sur ma page de traitement avant la redirection ?
En tout cas merci déjà pour l'aide et la solution apportée ...
|
|
mardi 15 février 2011 à 23:10:11 |
Re : formulaire php htlm / captcha

cod57
|
bonsoir
ok petit tuto
les trois scripts + la police font arial dans un repertoire et tu testes
elle est dans c:/windows/fonts/
form.php
Code PHP :
<?php
if(isset($_GET['message']) && $_GET['message']==1){
$message="Erreur saisir un code correct";
//echo $message; /*echo ici ou ailleurs dans la page*/
}else{
$message=NULL;
}
?>
<form method="post" action="verif.php">
<input type="text" size="20" maxlength="50" id="nom" name="nom" value="<?php if(isset($_POST['nom'])){echo $_POST['nom'];}else{echo "";}?>" />
<br /><input type="text" size="20" maxlength="50" id="prenom" name="prenon" value="<?php if(isset($_POST['prenom'])){echo $_POST['prenom'];}else{echo "";}?>" />
<br /><img src="imagecaptcha.php">
<?php echo $message;?>
<br /><input type="text" size="20" maxlength="50" id="code" name="code" value="" />
<br /><input type="submit" name="sub" value="envoi" />
</form>
verif.php
Code PHP :
<?php
session_start();
if(isset($_POST['code']) && isset($_SESSION['code']) && $_POST['code']===$_SESSION['code']){
echo '<pre>';
print_r($_POST); /*du form.php*/
echo '</pre>';
echo 'ça marche';
/*un traitement*/
/*
mail();
mysql_connect() ...
*/
}else{
header('Location: form.php?message=1');exit;
}
?>
imagecaptcha.php
Code PHP :
<?php
session_start();
/*
* File: CaptchaSecurityImages.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 03/08/06
* Updated: 07/02/07
* Requirements: PHP 4/5 with GD and FreeType libraries
* Link: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
class CaptchaSecurityImages {
var $font = 'arial.ttf';
function generateCode($characters) {
/* list all possible characters, similar looking characters and vowels have been removed */
$possible = '23456789bcdfghjkmnpqrstvwxyz';
$code = '';
$i = 0;
while ($i < $characters) {
$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
$i++;
}
return $code;
}
function CaptchaSecurityImages($width='120',$height='40',$characters='6') {
$code = $this->generateCode($characters);
/* font size will be 75% of the image height */
$font_size = $height * 0.75;
$image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
/* set the colours */
$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 20, 40, 100);
$noise_color = imagecolorallocate($image, 100, 120, 180);
/* generate random dots in background */
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
/* generate random lines in background */
for( $i=0; $i<($width*$height)/150; $i++ ) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
}
/* create textbox and add text */
$textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
/* output captcha image to browser */
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
$_SESSION['code'] = $code;
}
}
$width = isset($_GET['width']) && $_GET['width'] < 600 ? $_GET['width'] : '120';
$height = isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';
$captcha = new CaptchaSecurityImages($width,$height,$characters);
?>
|
|
mercredi 16 février 2011 à 14:10:00 |
Re : formulaire php htlm / captcha

djbabou
|
merci pour ce tuto.
Les étapes de vérification du captcha sont les même dans mon script. Je n'ai aucun problème au niveau de la vérification du captcha, ou de l'affichage de l'erreur si le code est erroné.
Mon problème : en cliquant sur le bouton submit, si le code est erroné selon la vérification, on redirige de nouveau vers le formulaire, et la, problème, les champs remplis préalablement par le client sont vides.
J'ai fait un test en utilisant ton tuto, idem, je n'arrive pas à remplir de nouveau les champs avec les valeurs saisies par l'internaute juste avant validation.
Peut être me comprendras-tu mieux !
Merci dans tous les cas. Moi je continue a creuser pour trouver une solution.
|
|
mercredi 16 février 2011 à 14:44:52 |
Re : formulaire php htlm / captcha

djbabou
|
Réponse acceptée !
Bon une solution alternative,
La seule que j'ai trouvé pour l'instant : utiliser des sessions. Je crée une variable session pour chaque champs du formulaire, si bien que lors du retour sur le formulaire, mon champs se remplis bel et bien.
Peut être que je fait mal, et qu'il est dangereux d'utiliser ainsi les sessions, je n'en sait rien. Vous en pensez quoi ?
Voici le code que sa donne du coup
form.php
Code PHP : <?php
session_start();
if(isset($_GET['message']) && $_GET['message']==1){
$message="Erreur saisir un code correct";
//echo $message; /*echo ici ou ailleurs dans la page*/
}else{
$message=NULL;
}
?>
<form method="post" action="verif.php">
<input type="text" size="20" maxlength="50" id="nom" name="nom" value="<?php if(isset($_SESSION['nom'])){echo $_SESSION['nom'];}else{echo "";}?>" />
<br /><img src="imagecaptcha.php">
<?php echo $message;?>
<br /><input type="text" size="20" maxlength="50" id="code" name="code" value="" />
<br /><input type="submit" name="sub" value="envoi" />
</form>
verif.php
Code PHP : <?php
session_start();
if(isset($_POST['code']) && isset($_SESSION['code']) && $_POST['code']===$_SESSION['code']){
echo '<pre>';
print_r($_POST); /*du form.php*/
echo '</pre>';
echo 'ça marche';
/*un traitement*/
/*
mail();
mysql_connect() ...
*/
}else{
$_SESSION['nom'] = $_POST['nom'] ;
header('Location: form.php?message=1');exit;
}
?>
Du coup, mes champs se remplissent correctement... Je suis preneur si vous voulez me donner des conseils quand à l'utilisation des sessions ( ou des tutos ).
Merci cod57 pour ta précieuse aide !
|
|
mercredi 16 février 2011 à 20:21:11 |
Re : formulaire php htlm / captcha

Sotaicho
|
dans mon formulaire je voudrais insérer un champs intitulé "domaine d'epérience" avec un champs texte où le condidat ecrit son expérience et juste a coté une case à cocher intitulée "aucune expérience" qui une fois coché elle désactive l'apparrition du champs text sité précédement comment je dois procédé??
Merci d'avance pour votre aide 
|
|
mercredi 16 février 2011 à 21:30:20 |
Re : formulaire php htlm / captcha

cod57
|
bonsoir
avec du css (div) un javascript c'est possible
une idéé http://weuhzor.com/javascript.php
ici c'est
<button onclick="show_hide ... sur un button
pour toi
<input type="checkbox" onselect="...
tu affiches un champs
je te laisse chercher
a++
|
|
jeudi 17 février 2011 à 16:48:43 |
Re : formulaire php htlm / captcha

djbabou
|
 Exact ! Voici un autre exemple que tu n'as plus qu'à copier dans ta page pour tester :
Code PHP :
<input type="checkbox" name="tpc[experience]" id="experience" onClick="document.getElementById('domaine').style.display = this.checked?null:'none'" style='float:left; margin-top:3px; margin-left:-10px; width:30px;' value="ok" />
<input type="text" name="tpc[domaine]" id="domaine" style="display:none;" />
Voila ...
|
|
Cette discussion est classée dans : code, php, formulaire, infos, captcha
Répondre à ce message
Sujets en rapport avec ce message
pb dans mon code [ par attentio ]
salut !!!bon ...G une petit soucis dans mon code de la page formulaire.php.je vous explique ... G une premiere page index.php qui me renvoie une liste
formulaire php [ par poofes ]
je suis tres content d'etes parmis vous, ba vraiment je c pa est ce que je trouvrais une reponse chez vous ou pa.ma question est la suite :j'esseye de
appeler un formulaire qui est dans un meme script PHP [ par fredericmaill ]
S@lut, je voudrais savoir s'il est possible et dans ce cas quauel methode utilisé, pour faire utiliser un formulaire POST, qui est sur le meme script
Explication de code [ par anonimwork ]
Bonjour, je suis novice en php, j'utilise une source téléchargée pour m'en sortir!... J'ai un formulaire avec login et mot de passe qui envoit sur une
un problème avec mon formulaire en utilisant php et mysql [ par lebienestrare ]
Bonjour tout le monde,j'ai un problème avec ma base de données(connexion entre php et mysql),le problème est: J'ai créé un site en php,j'ai fait une f
envoie d'un formulaire par email [ par rochdiboubaker ]
salut, j'ai téléchargé un code d'un formulaire d'envoie à un email (php), et j'ai essayé de l'executer avec Easy PHP, mais il a retourné ce message.
Problème récupération des variables depuis un formulaire inclus dans un code php [ par anakyl ]
Bonjour à tous,Je suis depuis plusieurs jours sur un problème que je n'arrive pas à résoudre.Je souhaite créer un formulaire avec une liste déroulante
Récupérer du code html saisie dans un input [ par coba5 ]
Bonjour,J'aimerai qu'un visiteur insere le lien d'une vidéo dans un formulaire, qu'il clique sur le bouton inserer la vidéo et que la vidéo s'affiche
Vérification formulaire livre d'or [ par Danamel ]
Bonjour à tous J'ai actuellement sur mon site un livre d'or qui fonctionne mais désirant le modifier afin de changer sa présentation je fait un s
fonction mail avec php [ par cyrilherve ]
salut à tous,je m'initie à l'utilisation de la fonction mail avec php. j'ai pris au hasard un script d'envoi d'e-mail dans un tutoriel d'apprentissage
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|