IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

(autre question de) traitement de formulaire [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Programmeur fou
    Inscrit en
    Octobre 2010
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Programmeur fou

    Informations forums :
    Inscription : Octobre 2010
    Messages : 339
    Points : 216
    Points
    216
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...
    à la retraite, occupé à apprendre Blender pour pondre des bagnôles pour FS22 (voir Papocle.fr)

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Homme Profil pro
    Programmeur fou
    Inscrit en
    Octobre 2010
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Programmeur fou

    Informations forums :
    Inscription : Octobre 2010
    Messages : 339
    Points : 216
    Points
    216
    Par défaut
    Alors, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?
    à la retraite, occupé à apprendre Blender pour pondre des bagnôles pour FS22 (voir Papocle.fr)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    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().
    une réponse vous a permis d'avancer ?

  5. #5
    Membre actif
    Homme Profil pro
    Programmeur fou
    Inscrit en
    Octobre 2010
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Programmeur fou

    Informations forums :
    Inscription : Octobre 2010
    Messages : 339
    Points : 216
    Points
    216
    Par défaut
    é bin voilà.
    Je m'étais arrêté à la liste des exemples, je n'étais pas descendu assez bas.
    Merci.
    à la retraite, occupé à apprendre Blender pour pondre des bagnôles pour FS22 (voir Papocle.fr)

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

Discussions similaires

  1. [VB6] Une autre question : Ouverture d'un navigateur
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 28/02/2006, 13h34
  2. [C#][2.0] Traitement de Formulaire (Insert / Update)
    Par softflower dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/02/2006, 13h44
  3. une autre question niveau communication
    Par gctom dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 15/01/2006, 23h25
  4. taille des 'pages' et autres questions
    Par Equus dans le forum Débuter
    Réponses: 2
    Dernier message: 04/03/2005, 09h50
  5. [LG]Choix du pascal ou autre ? Questions simples...
    Par vlacq dans le forum Langage
    Réponses: 5
    Dernier message: 30/01/2004, 23h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo