begin process at 2012 05 30 21:19:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

formulaire php htlm / captcha


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales