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 :

intval et débordement de capacité


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de sws2008
    Inscrit en
    Avril 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 108
    Points : 64
    Points
    64
    Par défaut intval et débordement de capacité
    bonjour
    j'ai un probleme avec la fonction intval .par exemple lorsque j'affecte:
    $n=1111122222555566633325 et je fais echo intval($n)
    j'obtien cette comme resultat 2147483647
    et si le nombre affecté a $n et petit l'affichage se fais normalement
    y a t'il un solution pour ça ?

  2. #2
    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
    Bonjour

    Ce qui se passe est tout simplement un débordement d'entier : 2147483647 = 2^31 -1 (valeur maximale d'un entier signé sur 32 bits) IL va donc falloir passer par un nombre en virgule flottante...

    Pourrait-on savoir le code exact et la version de php que tu utilises ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut,

    Non il n'y pas de solution. Un int a une valeur codé sur 32 bit donc 2^32. Tu ne peux donc pas stocker de valeurs plus grande que 2^32 dans un int.

    Dans ton cas il est tronqué à 2147483648 car les int en PHP vont de -2147483648 à 2147483648 ce qui donne un intervalle de 4294967296 qui est égal à 2^32.

    Voilà j'espère que tu as compris.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  4. #4
    Membre du Club Avatar de sws2008
    Inscrit en
    Avril 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 108
    Points : 64
    Points
    64
    Par défaut
    merci yoteco pour la réponse
    mais je voudrais savoir qu'est ce que je peux faire dans mon cas pour me protégé contre les failles xss lors de transfert des valeurs plus grandes que 2^32

  5. #5
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Si tu veux juste tester qu'il s'agis bien d'un nombre tu peux utiliser is_numeric.

    Et plus généralement pour les failles XSS il existe strip_tags et htmlentities !
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

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

Discussions similaires

  1. Détection débordement de capacité Int64
    Par Gilbert Geyer dans le forum Langage
    Réponses: 18
    Dernier message: 14/07/2009, 10h06
  2. [Système] Connaitre la capacité d'un disque dur et l'espace libre
    Par sebastakis dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 03/12/2007, 11h48
  3. Capacité d'un TMemo ou d'un TRichEdit
    Par alainvh dans le forum Composants VCL
    Réponses: 3
    Dernier message: 15/10/2004, 13h05
  4. depassement de capacité
    Par jpg dans le forum ASP
    Réponses: 2
    Dernier message: 19/08/2004, 18h26

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