Norbert_404 Posté 12 Janvier 2007 Partager Posté 12 Janvier 2007 Bonjour, J'ai un formulaire de recommandation et je souhaite le sécuriser un maximum contre les injections. Je souhaite ajouter un code qui empeche l'ajout d'un email dans le nom, de même que les \n et les \r Mais je tourne autour du pot... J'arrive pas if(empty($_POST['name'])) { $errormessages[] = 'Please enter your name.'; $errorfields[] = 'name'; } J'ai fais des essais de ce style mais ça ne marche pas: if(empty($_POST['name'])) { $errormessages[] = 'Please enter your name.'; $errorfields[] = 'name'; } else { if(!eregi("@"or"\n"or"\r", $_POST['name'])) { $errormessages[] = 'Please enter a proper name.'; Question supplémentaire : Est-ce nécessaire d'ajouter au fomulaire de recommandation un captcha ? Merci beaucoup ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Waibe Posté 12 Janvier 2007 Partager Posté 12 Janvier 2007 Un petit code pour vérifier si un texte est alphanumérique : function is_alphanum($par_value) { if (preg_match('|^[a-zA-Z0-9_]+$|', $par_value)) { return true; } else { return false; } } Et pour éviter les injections, tout dépend ensuite de ce que tu fais de tes données que tu récupères. Si c'est juste pour de l'affichage, encode les avec htmlspecialchars Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 12 Janvier 2007 Partager Posté 12 Janvier 2007 Il faudrait aussi autoriser les apostrophes ainsi que les lettres accentuées, (et les autres : c cédille, etc). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Norbert_404 Posté 13 Janvier 2007 Auteur Partager Posté 13 Janvier 2007 (modifié) Bonjour, Merci pour vos réponses, je vais tester vos codes... Cependant, aprés un trés long aprés-midi à chercher la combine, j'ai enfin trouvé quelqu echose qui semble marcher à tout les coups : if(empty($_POST['name'])) { $errormessages[] = 'Veuillez saisir votre nom.'; $errorfields[] = 'name'; } else { if(eregi("@", $name)){ $errormessages[] = 'Veuillez saisir uniquement votre nom.'; $errorfields[] = 'name'; }} J'ai ajouté tout simplement un if(eregi("@", $name)) qui détecte la présence d'un @ dans le champ nom. Ainsi l'utilisateur ne peut que rentrer tout ce qu'il sauf un email.... PS: si ja fait ça, c'est pour éviter les injection d'en-têtes... Voila a+ Modifié 13 Janvier 2007 par Norbert_404 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant