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 :

[Système] Fonction eval mal codée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut [Système] Fonction eval mal codée
    Bonjour,

    j'utilise la fonction eva() trouvée dans le manuel mais j'ai un peu des problèmes de syntaxe. Je fais ceci :

    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
    19
    $coupon_cond = $_SESSION['coupon_cond'];
    				$coupon_rabais = $_SESSION['coupon_rabais'];
    				$test_total = 0;
     
    				$total_fac = $order_total_display;
     
    				$str = 'if ($coupon_cond){{total} - $coupon_rabais;}';
    				echo $str;
     
    				echo ("<br/><br/>");
     
    				eval( "\$str = \"$str\";" );
     
    				$total_str = "{total}";
     
    				$str = str_replace($total_str, $total_fac, $str);
     
     
    				echo $str;
    Et mon navigateur affiche ceci :

    if ($coupon_cond){{total} - $coupon_rabais;}

    if (354.00 > 200){354.00 - 100;}

    conditions: {total} > 200
    cependant j'aimerais rajouter une variante :

    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
    19
    				$coupon_cond = $_SESSION['coupon_cond'];
    				$coupon_rabais = $_SESSION['coupon_rabais'];
    				$test_total = 0;
     
    				$total_fac = $order_total_display;
     
    				$str = 'if ($coupon_cond){$test_total = {total} - $coupon_rabais;}';
    				echo $str;
     
    				echo ("<br/><br/>");
     
    				eval( "\$str = \"$str\";" );
     
    				$total_str = "{total}";
     
    				$str = str_replace($total_str, $total_fac, $str);
     
     
    				echo $str;
    mais j'ai une erreur :
    Parse error: parse error, unexpected '=', expecting '}' in ....
    Comment dois-je modifier ma fonction eval() pour ne plus avoir ce problème ?
    Les cours: XHTML, CSS, PHP, Flash et Javascript
    Expliquez votre problème clairement et pensez à remercier ceux qui vous ont aidé.
    N'oubliez pas : Le tag résolu est la meilleure des satisfactions sur developpez.com
    Aucune question technique par MP.

  2. #2
    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 : 36
    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,

    C'est vraiment déconseillé d'utiliser eval() et dans ton cas je ne sais pas si c'est inévitable. Tu peux pas faire autrement?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut
    Justement je ne sais ! J'ai vu pas mal de truc sur la sécurité avec eval(); mais je ne sais pas si je peux utiliser une autre fonction... Bref j'aimerais savoir comment faire pour résoudre mon problème... Comment faire pour effectuer une opération x = a - b; dans ma fonction eval ?

    Merci !
    Les cours: XHTML, CSS, PHP, Flash et Javascript
    Expliquez votre problème clairement et pensez à remercier ceux qui vous ont aidé.
    N'oubliez pas : Le tag résolu est la meilleure des satisfactions sur developpez.com
    Aucune question technique par MP.

  4. #4
    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 : 36
    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
    Moi je comprend pas POURQUOI tu veux utiliser eval() ne peut tu pas faire comme ça ?

    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
    19
    20
    21
    22
    23
    $coupon_cond = $_SESSION['coupon_cond'];
    $coupon_rabais = $_SESSION['coupon_rabais'];
    $test_total = 0;
                    
    $total_fac = $order_total_display;
     
    $str = 'if ($coupon_cond){{total} - $coupon_rabais;}';
    echo $str;
                    
    echo ("<br/><br/>");
                    
    if($coupon_cond)
    {
        {total} - $coupon_rabais;
    }
                    
    $total_str = "{total}";
                        
    $str = str_replace($total_str, $total_fac, $str);
     
                    
    echo $str;
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut
    car les informations contenues dans mes variables ({total} > 300)sont stocké dans une base de données !
    Les cours: XHTML, CSS, PHP, Flash et Javascript
    Expliquez votre problème clairement et pensez à remercier ceux qui vous ont aidé.
    N'oubliez pas : Le tag résolu est la meilleure des satisfactions sur developpez.com
    Aucune question technique par MP.

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 466
    Points : 632
    Points
    632
    Par défaut
    Et si tu mùet un == dans ton if ??

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 243
    Points : 15 545
    Points
    15 545
    Par défaut
    Citation Envoyé par Dsphinx
    car les informations contenues dans mes variables ({total} > 300)sont stocké dans une base de données !
    et tu utilises ce calcul à quel moment ?
    comme le disait Yoteco c'est ultra super déconseillé d'utiliser "eval" donc si tu nous donnes plus de détails on peut t'aider à le faire d'une autre façon

  8. #8
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut
    J'ai deux champs dans ma base de données : conditions qui contient "{total} > 300" et rabais qui contient "100". "{total} > 300" sera écrit par les utilisateurs qui vont dire tiens la conditions est si le total est plus grand que 200, on lui accorde un rabais de 100.- ! Je reprend ces valeurs et j'aimerais les mettre dans un if et pour voir changer {total} pour la valeur $order_total_display; ensuite j'aimerais pouvoir si {total} est egal 354.- lui faire le rabais de 100.- et ma variable $test_total afficherai 254.- !

    Merci de votre aide !

    Voici la dernière version de mon code:

    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
    19
    20
    21
    22
    23
    24
    $coupon_cond = $_SESSION['coupon_cond'];
    $coupon_rabais = $_SESSION['coupon_rabais'];
    $test_total = 0;
     
    $total_fac = $order_total_display;
     
    $str = '
    if ($coupon_cond)
    {
    $test_total = {total} - $coupon_rabais;
     
    };';
     
    echo $str;
     
    echo ("<br/><br/>");
     
    $total_str = "{total}";
     
    $str = str_replace($total_str, $total_fac, $str);
     
    eval( "\$str = \"$str\";" );
     
    echo $str;
    et cela donne ceci :

    if ($coupon_cond) { $test_total = {total} - $coupon_rabais; };

    if ({total} > 200) { 0 = 354.00 - 100; };

    conditions: {total} > 200
    Les cours: XHTML, CSS, PHP, Flash et Javascript
    Expliquez votre problème clairement et pensez à remercier ceux qui vous ont aidé.
    N'oubliez pas : Le tag résolu est la meilleure des satisfactions sur developpez.com
    Aucune question technique par MP.

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

Discussions similaires

  1. [Tableaux] fonction et valeur de retour : mal codée ?
    Par Dsphinx dans le forum Langage
    Réponses: 6
    Dernier message: 22/06/2007, 14h12
  2. [Système] Equivalent de la fonction "eval" d'Asp en php5
    Par baxter_dev dans le forum Langage
    Réponses: 2
    Dernier message: 21/05/2007, 11h48
  3. Existe-t-il une fonction Eval() sous Delphi ?
    Par Hell dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2004, 17h45
  4. [String] équivalent de la fonction eval() en javascript
    Par jeyce dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 01/09/2004, 08h42
  5. fonction redonnant le code ascii d'un entier ???
    Par abignon dans le forum MFC
    Réponses: 4
    Dernier message: 29/01/2004, 12h32

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