[PHP] Image de vérification de formulaire

Fermé
Dorian - 3 oct. 2007 à 21:41
 Dorian - 4 oct. 2007 à 16:14
Bonjour,

Je n'arrive pas à réaliser la fonction de vérification d'une combinaison présente sur une image de vérification de formulaire avec le code saisie par l'utilisateur qui devrait correspondre.

La création et l'enregistrement de la combisaison se fait comme cela :

$alphanum = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
$rand = substr(str_shuffle($alphanum), 0, 5);
$_SESSION['image_random_value'] = md5($rand);

La comparaison des deux combinaisons, comme cela :

if(md5($code) != $_SESSION['image_random_value']) {
$error = $error . "Le code ne correspond pas, réessayez !";
$checkpass = 'false';
}

Je recupère bien sur le code saisie par l'utilisateur dans la variable $code.

Avez-vous une solution pour ce problème bien embarrassant ?

Par avance, merci.

Dorian.

4 réponses

Carotte77 Messages postés 543 Date d'inscription mardi 19 décembre 2006 Statut Membre Dernière intervention 30 juin 2011 539
3 oct. 2007 à 21:57
Bonjour,

Je n'ai pas très bien saisi ton problème : tu souhaites élaborer un captcha code ?

Pour info : un captcha code est un outil anti spam pour formulaire, ou l'on demande à l'internaute d'entrer des chiffres et lettres dans une case pour vérifier qu'il n'est pas un robot (exemple ici : http://www.atelierphp5.com/images/captcha.jpg )
1
Bonjour,

Suite à mon dernier message, voici le code que j'ai écris :

<?PHP if ( isset($_GET['image']) || $_POST['action'] == "submit" ) {
	session_start();
};

// CODE D'AUTHENTIFICATION GIF
if ( isset($_GET['image']) )
{

	$alphanum = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
	$rand = substr(str_shuffle($alphanum), 0, 5);
	$_SESSION['image_random_value'] = md5($rand);
	$image = imagecreatefromjpeg("img/bg".rand(1,2).".jpg");
	$bgColor = imagecolorallocate ($image, 255, 255, 255);
	$textColor = imagecolorallocate ($image, 0, 0, 0);
	imagestring ($image, 5, 5, 2, $rand, $textColor);
	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
	header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
	header("Cache-Control: no-store, no-cache, must-revalidate");
	header("Cache-Control: post-check=0, pre-check=0", false);
	header("Pragma: no-cache");
	header('Content-type: image/jpeg');
	imagejpeg($image);
	imagedestroy($image);
	exit;
}; ?>
<title>Titre page</title>
include("includes/config.inc.php"); ?>

            
			<span class="Style1"><p align="center">&nbsp;</p>
            <p align="center">Titre page</p>
            <p align="center">&nbsp;</p>
            </span>
			
<? if ($_POST['post']=="1") {

	$name = $_POST["name"];
	$firstname = $_POST['firstname'];
	$email1 = $_POST['email1'];
	$email2 = $_POST['email2'];
	$password1 = $_POST['password1'];
	$password2 = $_POST['password2'];
	$newsletter = $_POST['newsletter'];
	$termscheck = $_POST['terms'];
	$referrer = $_POST['referrer'];
	$code = $_POST['code'];

		if ($name == "") {
            $error = $error . 'Vous devez entrer votre nom<br>';
            $checkpass = 'false';
        }
		
		if (ereg('%', $name) || ereg('<', $name) || ereg('>', $name)) {
            $error = $error . 'Votre nom contient un/des caract&egrave;re/s non autoris&eacute;s<br>';
            $checkpass = 'false';
		}
		
		if ($firstname == "") {
            $error = $error . 'Vous devez entrer votre pr&eacute;nom<br>';
            $checkpass = 'false';
        }
		
		if (ereg('%', $firstname) || ereg('<', $firstname) || ereg('>', $firstname)) {
            $error = $error . 'Votre prénom contient un/des caract&egrave;re/s non autoris&eacute;s<br>';
            $checkpass = 'false';
		}

		$res = mysql_query("select count(*) from user where email='$email1'");
        if (mysql_result($res, 0) != 0) {
            $error = $error . 'Votre adresse e-mail est d&eacute;j&agrave; enregistr&eacute;e dans notre base de 		donn&eacute;es<br>';
            $checkpass = 'false';            
        }
		
        if (!ereg('@', $email1) || !ereg('.', $email1) || ereg('yopmail.com', $email1) || ereg('link2mail.net', $email1) || ereg('ephemail.net', $email1) || ereg('jetable.org', $email1)) {
            $error = $error . 'Votre adresse e-mail est invalide<br>';
            $checkpass = 'false';	
        }
		
        if ($email1 != $email2) {
            $error = $error . 'Les deux adresses e-mail saisies ne correspondent pas<br>';
            $checkpass = 'false';
        }
		 
	    if ($password1 == "") {
            $error = $error . 'Vous devez entrer un mot de passe<br>';
            $checkpass = 'false';
        } 
				        
		if (ereg('%', $password1) || ereg(' ', $password1)) {
            $error = $error . 'Votre mot de passe contient un/des caract&egrave;re/s non autoris&eacute;s<br>';
            $checkpass = 'false';
        }
		
		  if ($password1 != $password2) {
            $error = $error . 'Les deux mots de passe saisies ne correspondent pas<br>';
            $checkpass = 'false';
        }
	   
	    if ($termscheck != 1) {
            $error = $error . 'Vous devez accepter le r&egrave;glement pour vous inscrire<br>';
            $checkpass = 'false';
        }
        if(md5($code) != $_SESSION['image_random_value']) {
            $error = $error . "Le code ne correspond pas, réessayez !";
			$checkpass = 'false';
		}
			
		if ($checkpass == 'false') {
            $error = $error . '</font></b></div>';
            echo($error);
        }
		
		if ($checkpass != 'false') {
		echo("REQUETES + INSCRIPTION OK");
		;}
		
			
			 ;} else { ?>

			<form id="form" name="form" method="POST" action="<? $_SERVER['PHP_SELF'] ?>"><table width="600" border="0" align="center">
              <tr>
                <td height="40" colspan="2" class="Style1">Votre nom : </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="name" type="text" size="40" />                
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="2" class="Style1">Votre pr&eacute;nom : </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="firstname" type="text" size="40" />
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="2" class="Style1">Votre adresse e-mail : </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="email1" type="text" size="40" />
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="2" class="Style1">Votre adresse e-mail (confirmation) : </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="email2" type="text" size="40" />
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="2" class="Style1">Votre mot de passe : </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="password1" type="password" size="40" />
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="2" class="Style1">Votre mot de passe (confirmation) : </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="password2" type="password" size="40" />
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="2" class="Style1">Recevoir la lettre d'information : (?) </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="newsletter" type="checkbox" value="1" checked="checked" />
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="2" class="Style1">Acceptation du r&egrave;glement : </td>
                <td width="47%" height="40" class="Style1"><div align="center">
                  <input name="terms" type="checkbox" value="1" />
                </div></td>
              </tr>
              <tr>
                <td width="38%" height="40" class="Style1">Code de v&eacute;rification : (?) </td>
                <td width="15%" class="Style1"><div align="center"><img src="signup.php?image" border="1" width="60" height="20" /></div></td>
                <td height="40" class="Style1"><div align="center">
                  <input name="code" type="text" size="40" maxlength="5" />                
                </div></td>
              </tr>
              <tr>
                <td height="40" colspan="3" class="Style1"><div align="center">
				  <input name="referrer" type="hidden" value="<? echo $ref; ?>" />
				  <input name="post" type="hidden" value="1" />
                  <input type="submit" name="Submit" value="Inscription !" />
                </div></td>
                </tr>
            </table>
			</form>
			<span class="Style1">
			<p align="center">&nbsp;</p>
			</span>
			
			<? ;} ?>
1
Bonsoir,


Ceci est déjà fait... (par la même occassion, je t'indique que ton lien est mort). En fait mon problème se situe à la phase de comparaison du code inscrit par l'utilisateur et du code crypté en md5 par le système anti spam...

Merci et bonne nuit.

Dorian
0
PS: erreur, le lien n'est pas mort, je devais avoir un problème lors de son ouverture :S désolé..
0