Recuperation donnees captcha

Résolu
Hichtar -  
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour les copains,
Je debute en utilisation de sessions , j'ai cree un captcha, et je veux le verifier via un bouton qui aura pour effet de degriser un bouton de soumission.

Mon probleme est que je ne vois pas bien comment recuperer la valeur de mon captcha, qui est un chiffre random; et ce affin de l utiliser dans mon JS.

Voici mon code:


captcha.php

<?php
	session_start();
	$captcha=$_SESSION['captcha'] = rand(1000,9999);
  
	$img = imagecreatetruecolor(70, 30);
 
	$fill_color=imagecolorallocate($img,255,255,255);
	imagefilledrectangle($img, 0, 0, 70, 30, $fill_color);
	$text_color=imagecolorallocate($img,10,10,10);
	$font = './28DaysLater.ttf';
	imagettftext($img, 23, 0, 5,30, $text_color, $font, $_SESSION['captcha']);
	header("Content-type: image/jpeg");
	imagejpeg($img);
	imagedestroy($img);
?>




volunteer.php

<?php
	session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
	<title>Intervenant - Saisie </title>
	<link rel="stylesheet" type="text/css" href="volunteer.css" />
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<meta http-equiv="content-language" content="FR"/>
	<script type="text/javascript" src="volunteer.js"> </script>
</head>

<body>
<fieldset>
	legend>Captcha</legend>
	<h3>What is this number ?</h3>
	<img src="captcha.php" /><br />
	<input type="text" name="captcha" id="captcha" style="width:70px"/><br />
			
	<input type='button' value="Captcha validation" onclick="testCaptcha(document.volunteer.captcha.value,$_SESSION ['captcha']);"/> <!--,captcha_session-->
	<input type="submit" value="Submit" id="Submit" disabled="disabled"/>
	<input type="reset" value="Reset" />
<fieldset>
</body>


Si vous voulez voir ce que ca donne pour le moment, allez tout en bas de ma page :p

http://www.craftingparadize.fr/projetinfo/volunteer.php



Merci a tous d'avoir lu ce message meme si vous ne savez pas m aider :)



2 réponses

JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Salut !

La valeur de ton captcha est dans la variable globale "$_SESSION['captcha']" !

Edit !
Ne confond pas PHP avec Javascript !

onclick="testCaptcha(document.volunteer.captcha.value,<?php echo $_SESSION ['captcha']); ?>" /> 


Sauf que le but d'une captcha, c'est d'interdire au robots malveillants de valider le formulaire !
Or, dans ton cas, tu viens de donner au robot une possibilité de trouver la valeur du captcha, qui se trouve dans le onclick !

Solution !
1 - Soit tu utilise Ajax pour récupérer la valeur du captcha via une page PHP !
2 - Soit tu envois le formulaire, et tu teste après si le captcha est correct ou pas, sans passer par javascript !

Mettez en résolu quand c'est résolu -.- ...
1
Hichtar
 
Merci pour cette reponse claire et concise =)

je sait pas encore comment je vais manager l'AJAX mais je vais essayer :p

Hesitez pas a me donner des pistes si vous en avez ^^

je pense commencer comme ca:

function getXhr(){
var xhr = null ;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest() ;
else if(window.ActiveXObject){ // Internet Explorer< 7
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP") ;
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP") ;
}
}
else { // XMLHttpRequest non support'e par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...") ;
xhr = false ;
}
return xhr ;
}


function execution(){
var xhr = getXhr() ;
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout re¸cu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
reponse = xhr.responseText ;
//traitement realise avec la reponse...
}
}
// cas de la methode post
xhr.open("POST","pagecible.php",true) ;
xhr.setRequestHeader('Content-Type','application/x-www-formurlencoded
;charset=utf-8') ;
xhr.send("val1="+mavar) ;
}




Suisje en bonne voie? =)
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Je te conseille de valider directement ton captcha avec les autres champs !

<?php  
//Tester si le premier champs est conforme  
//Sinon, générer un message d'erreur  

//Tester si le deuxième champs est conforme  
//Sinon, générer un message d'erreur  

//Tester si les autres champs sont conformes  
//Sinon, générer un message d'erreur  

//Tester si le captcha est correct  
//Sinon, générer un message d'erreur  

//Si on a générer aucune erreur, alors on envois le forumulaire  
//Sinon, on affiche les erreurs a l'endroit voulu !  
?>
0
Hichtar
 
En fait je verifie le captcha et apres tous les autres champs, une fois le bouton submit "degrise" par le captcha,

Cela te semble il correct?:)
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Non !
Parce que pour dégriser le boutton submit, tu doit mettre la valeur du captcha quelque part dans le code source de ta page HTML, et un script peux facilement trouver cette valeur, et une fois qu'il le fait, il pourra dégriser le bouton est envoyé le formulaire avec la bonne valeur du capctha !

Donc enlève le truc du dégrisement, et vérifie directement les valeurs des champs via PHP !

Sinon, pour la méthode via Ajax !
Documente toi ici ! https://www.toutjavascript.com/savoir/xmlhttprequest.php3
0
Hichtar
 
Merci ^^

Ton aide m a ete precieuse, @bientot !
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
de rien :) !
0