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 :

exécuter une affectation de variable


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut exécuter une affectation de variable
    Bonjour,

    Ma question peut être stupide mais tant pis, je me lance.

    Je récupère dans une variable $x le contenu d'un cookie possédant plusieurs doublets du type key=value séparé par "%"
    après avoir fait un explode("%",$x) je peux retrouver l'ensemble des doublets. Par exemple j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = "$largeurEcran=1440";
    Est-il possible d'exécuter $str pour affecter la valeur 1440 à $largeurEcran ?


    J'ai essayé eval($str) mais sans grand succès.
    Je sais qu'eval() n'est pas recommandé pour des problème de sécurité, mais dans mon cas les risques sont quasi-nuls (cookie de session uniquement créé par un JavaScript)
    Y-a-t-il un moyen de réaliser ceci autrement?

    Merci pour tout conseil.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu ne crées pas un "vrai" cookie ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setcookie("largeurEcran", 1440);
    Les risques ne sont pas quasi-nuls : le cookie est à l'entière disposition de l'utilisateur, en remplaçant "$largeurEcran=1440" par "unlink('index.php');" par exemple
    Un "cookie de session" est un cookie qui contient l'id de la session PHP, je ne pense pas que ce soit de ça dont tu nous parles.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Bien sûr c'est que j'avais fait au départ. Ce que j'ai montré est juste un exemple, Mais en réalité je peux avoir 10 à 15 doublets de ce type, et pour éviter d'avoir 10 à 15 cookies j'avais pensé créer une seule chaine contenant tous les doublets que je peux parser en php. Si je pouvais interprêter /evaluer le doublet comme dans certains langages interpréteurs cela réduirait grandement mon code.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le nombre de cookie ou la longueur du code ce ne sont pas vraiment des critères de développement.
    D'autant plus que de ton ou tes cookies tu veux faire de toute façon faire15 variables.
    De plus, même en dehors d'un problème de sécurité qui permettrait à un utilisateur d'injecter quelque chose, d'un point de vue fonctionnel tu ne peux pas garantir que les valeurs existent dans ton cookie et donc les utiliser directement sans avoir ce que tu as récolté ou non n'est pas forcement génial.

    Dans tous les cas, cela peut se traiter avec un contrôle dans une chaine (en utilisant le & comme séparateur, on peut traiter la chaine comme une URL) :
    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
     
    // largeurEcran=1024&navigateur=firefox
     
    $cookies_allowed = array('largeurEcran'=>1140, 'navigateur'=>NULL);
     
    parse_str($_COOKIE['toncookie'], $cookie_var);
     
    foreach ($cookies_allowed as $name=>$default) {
        if (isset($cookie_var[$name])) {   // si la variable est dans la chaine de cookies, elle prend la valeur
             $$name = $cookie_var[$name];
        }
        else {
              $$name = $default; // sinon elle prend la valeur par defaut
        }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Points : 149
    Points
    149
    Par défaut
    Merci pour le code. Entre-temps j'en étais arrivé à quelque chose de semblable (mais moins joli) qui marche bien (testé uniquement avec juste 2 doublets). Juste pour info voilà ce que j'avais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $tailles = $_COOKIE["TaillesEcran"];
    $s = explode("%",$tailles);
    for ($i=0;$i<count($s);$i++){
           $str = $s[$i];
           $str = explode("=",$str);
           $var =  $str[0];
           $val = $str[1];
           $$var = $val;
    }
    echo $largeur." ".$hauteur;
    ?>
    Encore merci pour tout.

    Gégé

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/07/2009, 15h05
  2. Réponses: 2
    Dernier message: 11/12/2008, 22h08
  3. [ANT] affectation de variables dans une boucle
    Par dino_xrc dans le forum ANT
    Réponses: 6
    Dernier message: 17/12/2007, 19h47
  4. Réponses: 8
    Dernier message: 29/03/2007, 14h48
  5. Exécuter une requête à partir d'une variable
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/03/2006, 14h15

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