Norbert_404 Posté 12 Janvier 2007 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 !
Waibe Posté 12 Janvier 2007 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
captain_torche Posté 12 Janvier 2007 Posté 12 Janvier 2007 Il faudrait aussi autoriser les apostrophes ainsi que les lettres accentuées, (et les autres : c cédille, etc).
Norbert_404 Posté 13 Janvier 2007 Auteur 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant