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 :

Typage des donnees


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Typage des donnees
    Bonjour,
    Quand je fais : $_POST['maVariable'] et que je poste (via formulaire) 0 :
    alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $maVariable = (int)$_POST['maVariable']
    vaut 0 -> OK
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (isset(maVariable) ? (int) $_POST['maVariable'] : '')
    alors j'ai 0 -> OK
    Mais si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (isset(maVariable) && !empty($_POST['maVariable']) ? (int) $_POST['maVariable'] : '')
    alors j'ai (string) vide -> ???
    Pouvez vous me dire pourquoi et quelle condition utiliser quand je poste 0 et que je veux comparer $maVariable avec $_POST['maVariable'] ? (ma variable est numérique)
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    empty() considère plein de valeurs comme vides : toujours se référer à la doc par ici
    Après avoir lu la doc, tu en concluras que empty() englobe isset(), donc faire isset(...) && !empty(...) est inutile, ! empty(...) suffit amplement.

    En passant, la valeur zéro est considérée comme "vide" par empty() d'où le résultat obtenu : ''

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut
    Bonjour rawsrc , merci de ton aide
    En fait je teste ces valeurs pour historiser les changements qui peuvent survenir lors de différentes saisies. Dans la base, par défaut, la valeur est fixée à 0 si pas renseignée.
    Ensuite je veux tester si la valeur saisie $_POST['maVariable'] est identique ou pas à celle stockée dans la base obtenue par une requête $data['maVariable'].
    Dans le cas qui me contrarie, $_POST['maVariable'] reste à 0
    Si l'utilisateur ne saisie rien mais valide tout de même le formulaire, (NTUI), rien ne doit s'inscrire dans l'historique. donc si je t'ai suivi, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $maVariable = $_POST['maVariable'] ; // quid de la sécurité dans ce cas ?
    ( $maVariable !== $data['maVariable'] || !empty($maVariable) ? $data['maVariable'].' devient '.$maVariable : '' ) ;
    Quels sont les tests à effectuer sur $maVariable pour éviter les erreurs de saisie ou les actes malveillants ?
    A te lire,

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Bonjour

    les erreurs de saisies, c'est surtout une jolie interface dans laquelle il est dur de se tromper.

    les tentatives de piratage, filter_var() me semble un bon début parce qu'il est possible d'inserer des caractères de fin de chaines en plein milieu d'une chaine ... et ça peut donner du résultat hasardeux.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. [VB6] exporter des données de Vb vers word
    Par ptitjean80 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 29/05/2004, 03h50
  2. Réponses: 5
    Dernier message: 11/12/2003, 15h45
  3. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 12h21
  4. [] Impression des donnees sur etiquettes
    Par der dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/12/2002, 16h43
  5. importer des donnees dans interbase
    Par ms91fr dans le forum InterBase
    Réponses: 3
    Dernier message: 25/11/2002, 18h43

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