Version complète: sur le forum Webmaster Hub : Validation champ nom
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Norbert_404
Bonjour, smile.gif

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 sad.gif

CODE
    if(empty($_POST['name'])) {
        $errormessages[] = 'Please enter your name.';
        $errorfields[] = 'name';
    }


J'ai fais des essais de ce style mais ça ne marche pas:
CODE
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
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
Il faudrait aussi autoriser les apostrophes ainsi que les lettres accentuées, (et les autres : c cédille, etc).
Norbert_404
Bonjour,
Merci pour vos réponses, je vais tester vos codes... a_thumbsup_20.gif

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 :
CODE
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+
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.