Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre régulier
    Homme Profil pro
    Programmeur fou
    Inscrit en
    octobre 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Programmeur fou

    Informations forums :
    Inscription : octobre 2010
    Messages : 142
    Points : 76
    Points
    76

    Par défaut (autre question de) traitement de formulaire

    Bonjour les amis,

    J'ai soigneusement lu la longue prose des experts en "échappement" dans le message précédent, mais n'ai pas trouvé mon bonheur.

    Si je résume bien, pour blinder mon formulaire, j'écrirai :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $nom = $_POST['nom'];
    if (!$nom)
    {
    	echo "$fr1 $b1 Veuillez entrer votre nom dans la zone 1 $b0 $f0 $br";
    	$fail = 1;
    }
    $nom = filter_input(INPUT_POST, 'nom', FILTER_SANITIZE_STRING); // voir les filtres http://www.php.net/manual/fr/filter.filters.php [Filtres de nettoyage]
    $nom = htmlspecialchars($nom, ENT_QUOTES);			// pour traiter les accents et supprimer le code html
    $nom = stripslashes($nom);					// supprime les antislashs d'une chaîne et aussi les balises (exemple <strong>)
    $nom = strip_tags($nom); 					// supprime les balises (code)
    $nom = mysql_real_escape_string($nom); 				// évite les injections SQL en protégeant les caractères spéciaux d'une commande SQL
    Or, moi, je souhaite DIRE à l'utilisateur qu'il n'a pas droit à tel ou tel caractère. Y aurait-il un petit script par ici qui ferait ça, svp ?
    Sinon je l'écrirai.
    Merci bcp.

    @++

    EDIT : http://php.net/manual/fr/function.my...ape-string.php
    mysql_escape_string est obsolète...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro Vincent
    Inscrit en
    juillet 2005
    Messages
    21 217
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 217
    Points : 30 911
    Points
    30 911

    Par défaut

    Tout mysql_ est effectivement obsolète.

    Pour répérer si une liste de caractère est présente dans ta chaine, tu peux utiliser preg_match().

  3. #3
    Membre régulier
    Homme Profil pro
    Programmeur fou
    Inscrit en
    octobre 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Programmeur fou

    Informations forums :
    Inscription : octobre 2010
    Messages : 142
    Points : 76
    Points
    76

    Par défaut

    Alors, je fais :

    Code :
    1
    2
    3
    4
    5
    if (preg_match(">", $name))
    {
        echo "Caractère non autorisé détecté dans la zone Nom";
        $fail=1;
    }
    et c'est bon ?

  4. #4
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2012
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2012
    Messages : 764
    Points : 1 374
    Points
    1 374

    Par défaut

    Bonsoir,

    si tu veut simplement tester si un caractère est dans une chaîne de caractère tu devrait passer par strpos() ou strstr() qui sont plus rapide, comme l'indique la doc de preg_match() dans la zone "Notes".


    EDIT : si tu a plusieurs caractère à tester strpbek().

  5. #5
    Membre régulier
    Homme Profil pro
    Programmeur fou
    Inscrit en
    octobre 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Programmeur fou

    Informations forums :
    Inscription : octobre 2010
    Messages : 142
    Points : 76
    Points
    76

    Par défaut

    é bin voilà.
    Je m'étais arrêté à la liste des exemples, je n'étais pas descendu assez bas.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •