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 :

Nombres commençant par 0 [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut Nombres commençant par 0
    Bonjour à tous,

    j'avais une appli qui tournait sans souci auparavant.
    Mais depuis peu, je constate que des transmissions en GET d'identifiants ne se sont pas correctement.

    Un exemple d'identifiant : 01928

    Le fait de commencer par 0 pose problème.
    Avec Firebug, je vois bien que le paramètre transmis est bien 01928.

    Par contre, en faisant un : print_r($_GET), je me rends compte que le 0 est tronqué. Il me donne 1928.

    Il considère que c'est un nombre et donc enlève le 0 superflu. Hors, je ne veux pas qu'il adopte ce comportement.

    Quelqu'un aurait une piste ?
    Je suis sur un serveur mutualisé, mais j'aimerai savoir quel réglage aurait été modifié pour avoir ce changement de comportement.

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Salut,
    On peut voir un peu de code stp ?

    merci
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Essaye de voir ce que donne un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump((string)$_GET['tavariable'])

  4. #4
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    d'un côté, on a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="apprenant" onclick="window.open('suivi_apprenant.php?lien_photo=../gdu/photos/02116.jpg&id_apprenant=2116','Suivi','width=380,height=380,left=600,top=100')">
    Dans le suivi Réseau Zone HTML de Firebug :
    Onglet Paramètres :
    id_apprenant 02116
    lien_photo ../gdu/photos/02116.jpg

    Je fais juste un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $_GET['id_apprenant'];
    Et le 0 du départ a sauté.

    Concernant le var_dump. Voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <pre><font color='#bb00bb'>'2116'</font> <i>(length=4)</i>
    </pre>

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    <div class="apprenant" onclick="window.open('suivi_apprenant.php?lien_photo=../gdu/photos/02116.jpg&id_apprenant=2116','Suivi','width=380,height=380,left=600,top=100')">
    Ça parait logique que $_GET['id_apprenant'] ne contienne pas un 0 qui n'existe pas. Ton lien est généré comment ?
    Pourfendeur de singletons en croisade

  6. #6
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    J'ai bidouillé des trucs juste avant, désolé.

    Je confirme que dans l'URL de départ, le 0 est bien présent.

    On a bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="apprenant" onclick="window.open('suivi_apprenant.php?lien_photo=../gdu/photos/02116.jpg&id_apprenant=2116','Suivi','width=380,height=380,left=600,top=100')">
    .

    Le souci vient au niveau du $_GET.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Ton url est généré en php ou elle est écrite en dur ?

    Si elle est écrite en php on peut voir le code ?

  8. #8
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    Je te le donne, mais je ne pense vraiment pas que celà va t'aider.
    En plus, cette partie est tarabiscotée (Code datant un peu, que je refonds en ce moment à part, donc ce code est celui d'origine. Je vais me faire huer ! )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    		if($nom_pc!="aucun") {
                $URL="suivi_apprenant.php?lien_photo=".$lien_photo."&id_apprenant=".$id;
    ?>
                <script>
     
    			if(liste_pc_init==true) {
    				liste_pc_init=false;
    				i=0;
    			}
    			else
    				i=liste_pc.length;
    			liste_pc[i]=new Array(2);
    			liste_pc[i][0]="<?php echo $nom_pc; ?>";liste_pc[i][1]="<?php echo $id; ?>";
                document.getElementById("<?php echo $nom_pc; ?>").innerHTML="<div class=\"apprenant\" onclick=\"window.open('<?php echo $URL; ?>','Suivi','width=380,height=380,left=600,top=100')\"><img src='<?php echo $lien_photo; ?>' width='90' height='90' title='<?php echo $nom_pc; ?>'><br/><?php echo $nom.' '.$prenom.' ('.$id.')'; ?></div>";
     
                </script>
    <?php
            }

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    $id vient d'où ? Base de données ?
    Pourfendeur de singletons en croisade

  10. #10
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    Oui Mr :-)

    Je sens que tu as une idée derrière la tête ! Dis moi en plus.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    (je "pense" avoir suivi l'idée de Petibidon )

    Dans la base, le id est il en varchar ou en (big)int ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div class="apprenant" onclick="window.open('suivi_apprenant.php?lien_photo=../gdu/photos/02116.jpg&id_apprenant=2116','Suivi','width=380,height=380,left=600,top=100')">
    je vois pas de 0

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    force la variable $id en string avec ceci avant le premier appel à $id

    En fait si tu mets une variable int commençant par un 0 cela devient un entier octale.... donc pas du tout ce que tu veux.....

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Citation Envoyé par sachav Voir le message
    (je "pense" avoir suivi l'idée de Petibidon )

    Dans la base, le id est il en varchar ou en (big)int ?
    Z'actement
    Si tu veux absolument le 0, c'est qu'il correspond à un masque à 5 chiffres ? Auquel cas tu peux te tourner vers un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $id = str_pad( $id , 5 , "0" , STR_PAD_LEFT );
    Pourfendeur de singletons en croisade

  14. #14
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    Merci ç tous, vous êtes au taquet je vois !
    Sachav et vous autres, c'est moi qui est mal mis le code, je m'en excuse encore comme je disais quelque messages avant. il y a bien un 0 déjà avant l'envoi en GET vers le popup de destination.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div class="apprenant" onclick="window.open('suivi_apprenant.php?lien_photo=../gdu/photos/02116.jpg&id_apprenant=02116','Suivi','width=380,height=380,left=600,top=100')">
    Quand l'envoi en GET se fait dans le popup, je vois via FIrebug que le paramètre id_apprenant est bien à 02116.

    Mais dans le print_r($_GET), il a disparu.
    Le contenu de window.open est une chaîne à part entière, donc pourquoi faire des étapes de conversion ?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par gui80 Voir le message
    Le contenu de window.open est une chaîne à part entière, donc pourquoi faire des étapes de conversion ?
    Parce que en php 02116 != 2116

    en php 02116 est un nombre octal donc un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 02116; //affiche 1102
    Je ne suis pas sur que ton pb vienne de là..... mais bon... essaie

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 453
    Points : 550
    Points
    550
    Par défaut
    Et en écrivant l'url directement ?
    Le problème vient de ton code, je viens de tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $_GET:
    array(3) {
      ["mavariable"]=>
      string(5) "02261"
      ["mavar2"]=>
      string(5) "00024"
      ["autrevariable"]=>
      string(5) "01234"
    }

  17. #17
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    Le problème ne vient pas de mon code a priori.
    J'ai fait juste un php qui fait çà :

    Réponse avec id_apprenant=02106 dans l'URL :

    Array ( [id_apprenant] => 2106 )

    J'ai testé sur un XAMPP.
    Réponse avec id_apprenant=02106 dans l'URL :

    Array ( [id_apprenant] => 02106 )

    Donc, il y a une différence d'interprétation. Les réglages du serveur ont été touchés sur ce serveur mutualisé.

    Alors, 2 questions :
    - Quel serait la directive modifiée ?
    - Comment pallier à ce souci en sachant que je n'ai pas la main sur le serveur (serveur mutualisé) ?

  18. #18
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut Interprétation d'une variable avec un _
    Bonjour à tous,

    on avance petit à petit.
    Après plusieurs essais de divers noms de variable en GET dans l'URL et de valeur, on peut constater ceci :

    - le traitement du caractère _ en tant que variable en GET semble perturber son interprétation.

    C'est à dire que si je mets une variable comme :
    toto_repos = 02101

    Celà veut dire que si une variable possède un underscore, il le traite comme si je transmettais un entier. Exemple :
    02102 affiche 2102
    azerty affiche 0

    Donc, Sachav et les autres, pouvez-vous essayer sur vos serveurs avec des variables possèdant des underscores ?

    Merci d'avance

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 68
    Points : 97
    Points
    97
    Par défaut
    Donc, Sachav et les autres, pouvez-vous essayer sur vos serveurs avec des variables possèdant des underscores ?
    Non chez moi ca ne change rien...
    une variable transmise par get post etc.. sera toujours un string à la sortie....

    Mais si tu as ce comportement la seul possibilité que je vois c'est que tes variables $_GET sont peut être traité en amont..... (Si tu utilise un framework ou autre script... par exemple...)

    Fait un test simple pour s'assurer que ton code n'affecte pas tes variables $_get:

    Au tout début de ton script index.php en toute première instruction met un
    <?php var_dump($_GET['mavariable'])?>

    Et met aussi ce code à l'endroit ou tu doit traiter ce $_GET....

    Si les résultats obtenues sont différent..(notement le type de variable) => problème..

  20. #20
    Membre actif
    Inscrit en
    Mars 2004
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 290
    Points : 217
    Points
    217
    Par défaut
    Sur les tests que je suis en train de faire, je fais juste un code qui récupère le contenu du $_GET.
    Et je tape direct l'URL en insérant à la suite un paramètre id_a avec une valeur, donc pas de traitement en amont de frameworks ou autre.

    J'ai remplacé par ton var_dump. je n'ai que çà dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_GET['id_a']);
    avec id_a=azerty => résultat = 0
    avec id_a=34 => résultat = 34
    avec id_a=034 => résultat = 34

    Le fait d'avoir une variable avec un _, il le traite comme si c'était un entier.
    Je pense que c'est une directive apache ou php qui a été modifié. Je pense que celà a été fait contre les injections SQL, car en SQL, le % représente en expression régulière "remplacement par 1 caractère mais n'importe lequel" non ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 30
    Dernier message: 17/11/2012, 16h42
  2. Résultat commençant par un chiffre avec requête SELECT
    Par nicolas.pissard dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/04/2010, 13h31
  3. [Chaines de caractères] commençant par un nombre
    Par sempire dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/05/2009, 18h30
  4. [Access] Récupérer les champs commençant par ...
    Par paflolo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/02/2006, 10h35
  5. [procédure stockée] table temporaire commençant par #???
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/04/2004, 12h23

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