toucheservice Posté 5 Décembre 2007 Posté 5 Décembre 2007 (modifié) Bonjour, voila j'ai un formulaire de commande avec un captcha, le formulaire fonctionne bien et le captcha aussi mais le probleme qui se pose c'est ou inseret le code de vérification du captcha. je vous envoi mon script pour mieu comprendre, tel qu'il est le porbleme est que quand les champs du formulaire sont rempli est exacte il est possible d envoyer les données sans remplir le code du captcha. <?php$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";$msg_ok = "Votre demande a bien été prise en compte.";$message = $msg_erreur;define('MAIL_DESTINATAIRE','xxxxxx_AT_xxxxx.xx'; define('MAIL_SUJET','yyyyyyyyyyyyyyyyyyyyy'); // vérification des champs if (empty($_POST['Nom'])) $message .= "Votre Nom<br/>"; if (empty($_POST['Prenom'])) $message .= "Votre Prénom<br/>"; if (empty($_POST['Adresse'])) $message .= "Votre adresse<br/>"; if (empty($_POST['Ville'])) $message .= "Votre Ville<br/>"; if (empty($_POST['CP'])) $message .= "Votre code postal<br/>"; if (empty($_POST['Mail'])) $message .= "Votre adresse mail<br/>"; if (empty($_POST['Phone'])) $message .= "Votre numéro de téléphone<br/>"; if (empty($_POST['Login'])) $message .= "Votre Login ftp<br/>"; if (empty($_POST['Pass'])) $message .= "Votre mot de passe<br/>"; // si un champ est vide, on affiche le message d'erreur if (strlen($message) > strlen($msg_erreur)) { echo $message; // sinon c'est ok } else {foreach($_POST as $index => $valeur) {$$index = stripslashes(trim($valeur)); }$interets = $_POST['interets'];$sqlinterets = ''; for ($i=0; $i<count($interets); $i++){$sqlinterets .= $interets[$i];$sqlinterets .= ', '; } //Préparation de l'entête du mail: $mail_entete = "MIME-Version: 1.0\r\n"; $mail_entete .= "From: {$_POST['Nom']} " ."<{$_POST['email']}>\r\n"; $mail_entete .= 'Reply-To: '.$_POST['Mail']."\r\n"; $mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"'; $mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n"; $mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n"; // préparation du corps du mail $mail_corps .= "Message de :$Nom $Prenom\n"; $mail_corps .= "Adresse : $Adresse, $CP $Ville\n"; $mail_corps .= "Adresse e-mail : $Mail\n"; $mail_corps .= "Numéro de téléphone : $Phone\n"; $mail_corps .= "Login et password : $Login , $Pass\n"; $mail_corps .= "Pack demandé : $Pack\n"; $mail_corps .= "Type d'acces : $Acces\n"; $mail_corps .= "Type du serveur : $TypeSrv\n"; $mail_corps .= "Type du payement : $Paiement\n"; $mail_corps .= "Forfait : $Forfait\n"; // envoi du mail if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) { //Le mail est bien expédié echo $msg_ok;} else { //Le mail n'a pas été expédié echo 'Une erreur est survenue lors de l\'envoi du formulaire par email'; } }?> est ce que qqn peux m'aider a palcer le code du captcha pour éviter cela??? Merci Modifié 5 Décembre 2007 par Dan
Dan Posté 5 Décembre 2007 Posté 5 Décembre 2007 Comme tu ne vérifies aucun champ avant d'envoyer le mail, tu risques très vite de transformer ce formulaire en paradis pour spammeurs ! Attention aux injections d'entête ! Voir ce lien pour les explications: http://www.securephpwiki.com/index.php/Email_Injection
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant