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

PHP & Base de données Discussion :

[SQL] nom d'une variable postée


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut [SQL] nom d'une variable postée
    Bonjour,

    depuis peu, je suis contraint de changer mon code à cause d'un serveur qui ne reconnaît pas le nom de variable $nomvariable pour une variable postée, mais seulement $_POST['$nomvariable']...
    L'idée serait donc de renommer de façon itérative chacune de mes variables postées... Je sais comment afficher l'ensemble des valeurs postées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo var_dump ($_POST);
    Comment faire pour chaque variable $_POST['$nomvariablei'] soit créée une variable $nomvariablei$ contenant sa valeur?

    Cordialement
    Mathieu

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 337
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 337
    Billets dans le blog
    17
    Par défaut
    Regarde import_request_variables( ).
    Mais attention, tu devrais commencer à utiliser $_POST & cie car les autres formes d'écriture ne seront plus supportées à terme.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    OK super c'est ce qui me fallait!

    Qu'est-ce qui est appelé à terme à disparaître?
    Tout ceci me permet juste de ne pas avoir à tout changer mon code avec des $POST_["nomvariable"]... Et en plus ça permet une écriture plus concise. Je ne comprends pas où est le problème, mais je curieux que tu me le dises?

    Cordialement
    Mathieu

  4. #4
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    L'utilisateur des variable global comme celle-ci n'existe plus et ne devrai plus exister. Cela cause énormément de problème de sécurité.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    Ben justement là l'utilisation de la commande, c'est juste pour renommer une variable... donc où est le problème?
    le mieux est-il d'utiliser la variable avec son nom d'origine $_POST['mavariable']???

    Mathieu

  6. #6
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Oui et c'est pour ça que ce n'est plus utilisé.

    Exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($array AS $val) {
          $x .= $val;
    }
    Si tu as oublié d'initialiser $x avant, que se passe t'il si une personne POST une variable nommée "x" ? (Si tu as les notices d'activé PHP te le dira, mais dans le cas contraire...)

    Il ne faut pas laisser l'utilisateur pouvoir interagir directement avec ton code

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    Bon je ne vois pas du tout ce que ça ferait, ce n'est pas grave...
    Disons que je vais faire un rechercher remplacer de toutes mes variables et puis c'est tout!

    Bonne soirée
    Mathieu

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    euh... non j'avais coché résolu, mais permettez-moi de revenir à la chose...
    d'après ce que j'ai compris, il était embêtant, pour la sécurité de renommer une variable postée, par exemple:
    Cependant j'ai dû le faire quand même, quand il s'agissait d'inclure la variable dans une requête SQL, car visiblement on ne peut pas inscrire de valeur du type $_POST["toto"] dans la requête.
    Est-ce que je me trompe?
    Sinon, est-ce que j'ai mal compris? Est-il quand même embêtant de renommer la variable?

    Bien cordialement
    Mathieu

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    vous ne comprenez pas bien.

    Votre script fonctionnait correctement avec REGISTER_GLOBAL sur On, hors ceci est très mauvais pour la sécurité donc, au lieu d'utiliser $ma_valeur pour un GET ou un POST, vous devez utiliser $_GET['ma_valeur'] ou $_POST['ma_valeur'].

    Bien sûr que vous devez modifier votre code, mais si vraiment, vous ne voulez pas vous passer de REGISTER_GLOBAL, vous pouvez toujours utilisez la fonction extract().

    Du reste, vous pouvez faire ce que vous voulez avec les superglobales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
      if (isset($_GET['toto'])) $toto = $_GET['toto'];
     
      $numero = intval($_POST['numero']);
     
      $req = "SELECT `numero` FROM `tabless` WHERE `pseudo` LIKE '".$_GET['pseudo']."'";
     
      foreach ($_POST as $cle => $val) echo $cle.' >> '.$val;
     
    ?>
    Cordialement,
    DaRiaN.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    OK, donc déjà je vois comment utiliser une variable $_GET[] dans une requête...
    mais je n'ai toujours pas compris où était le problème...
    Si on n'utilise pas de register_global, mais qu'on renomme juste les variables avec import_request_variables( ) ou extract() à l'arrivée dans une page, y'a-t-il tout de même un problème???

    Cordialement
    Mathieu

  11. #11
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Oui... C'est pourtant pas difficile à comprendre

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Je n'ai pas le temps de vous expliquez, donc voici une page qui traite du sujet, mais si ce n'est toujours pas clair, google répondra a toutes vos questions.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 176
    Par défaut
    Bon, je comprends vaguement... à l'avenir j'essaierai (peut-être) de n'utiliser que $_GET et $_POST

    merci à tous
    Mathieu

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

Discussions similaires

  1. [MySQL] problème nom de table en SQL parce que le nom est une variable
    Par Boujoute dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/02/2012, 00h08
  2. [PHP 5.2] Récupérer une variable POST avec une variable comme nom
    Par bailamos dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2008, 14h59
  3. [Reflection] Connaître le nom d'une variable ...
    Par dahwoud dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 09/08/2005, 14h37
  4. Réponses: 3
    Dernier message: 01/12/2004, 09h43
  5. Pl/SQL utilisation d'une variable dans un select
    Par larg dans le forum PL/SQL
    Réponses: 17
    Dernier message: 30/11/2004, 17h08

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