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 :

filter_input ne donne pas le résultat escompté


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 603
    Points : 818
    Points
    818
    Par défaut filter_input ne donne pas le résultat escompté
    Bonjour,
    Dans ce code, j'ai repris un exemple de la doc dans lequel je n'ai changé que le nom des variables, pourtant le var_dump final renvoie 0 quel que soit les valeurs du var_dump d'entrée (2 par exemple).
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $toSave = $_POST;
    var_dump($toSave);
    $options = ['options'=>['default'=>0, 'min_range'=>0, 'max_range'=>9]];
    $toSave['marriage_order_m'] = filter_input(INPUT_POST, $toSave['marriage_order_m'], FILTER_VALIDATE_INT, $options);
    $toSave['marriage_order_f'] = filter_input(INPUT_POST, $toSave['marriage_order_f'], FILTER_VALIDATE_INT, $options);
    var_dump($toSave['marriage_order_m'], $toSave['marriage_order_f']);

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    var_dump($toSave);

    sinon, fait un var_dump($_POST), histoire de voir le contenu de ce que tu doit récupérer normalement.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Au lieu de "dire", MONTRE les résultats des var_dump ! (copier-coller)

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Juste pour rappel : si tu utilises filter_input, il faut mettre le nom du champ du formulaire en paramètre, et non la valeur.
    Donc si tu as un champ de formulaire de la forme : <input type="text" name="marriage_order_m" />, l'appel à filter_input ressemblera à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $toSave['marriage_order_m'] = filter_input(INPUT_POST, 'marriage_order_m', FILTER_VALIDATE_INT, $options);

  5. #5
    Invité
    Invité(e)
    Par défaut
    +1 pour Celira !

    • filter_input : "Récupère une variable externe et la filtre"

    Et avec INPUT_POST, ça ne fonctionne qu'avec une variable passée en POST.
    Pas avec une variable intermédiaire ($toSave)...

    C'est comme vouloir dévisser un clou avec une lime.....
    Où se moucher l'oreille avec une brique.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour info, la fonction pour filtrer des variables c'est filter_​var :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $toSave['marriage_order_m'] = filter_var($toSave['marriage_order_m'], FILTER_VALIDATE_INT, $options);
    .

    @Jreaux : tu t'essayes aux métaphores ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    @Celira
    Spécial dédicace !)

  8. #8
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 603
    Points : 818
    Points
    818
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    +1 pour Celira !

    • filter_input : "Récupère une variable externe et la filtre"
    J'avais lu, mais encore faut-il savoir ce qu'on appelle une variable "externe"? Pourquoi externe? Pour ce type de variables la doc parle généralement de super globales.

    Merci Celira

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Techniquement, une variable super-globale c'est une variable qui est accessible partout. C'est une description technique.
    Une donnée externe, c'est une donnée qui provient de l'extérieur du script, soit reçue depuis la requête HTTP (GET, POST, REQUEST, COOKIE), soit récupérée dans l'environnement du server (SERVER et ENV).

    Il se trouve que les données externes sont accessibles via des variables super-globales. En revanche, toutes les super-globales ne contiennent pas des données externes
    Les super-globales

  10. #10
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 603
    Points : 818
    Points
    818
    Par défaut
    Merci pour cette explication.

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

Discussions similaires

  1. Ma requête ne me donne pas le résultat escompté
    Par Invité dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/06/2014, 14h50
  2. Réponses: 2
    Dernier message: 22/10/2013, 10h35
  3. Réponses: 2
    Dernier message: 30/12/2011, 14h23
  4. [XL-2003] pb sur formule qui ne donne pas le résultat escompté
    Par midge dans le forum Excel
    Réponses: 2
    Dernier message: 06/02/2011, 15h49
  5. [GNUPlot] Multiplot qui ne donne pas le résultat escompté
    Par Nicocot dans le forum Autres langages
    Réponses: 0
    Dernier message: 24/11/2008, 20h05

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