Page 1 sur 1

100% bloqué: Comment appliquer un EVAL là-dessus?

Posté : 28 févr. 2006, 12:23
par Lorange
J'ai la variable suivante:

Code : Tout sélectionner

$nom = htmlspecialchars($result["cat_name_trans"]);
Je dois y appliquer la fonction eval. J'ai essayé (parmi tant d'autres choses):

Code : Tout sélectionner

$nom = eval(htmlspecialchars($result["cat_name_trans"]));
Mais cela ne fonctionne pas.

Qui pourrait me débloquer? Je suis desssus depuis plus d'une heure!

Re: 100% bloqué: Comment appliquer un EVAL là-dessus?

Posté : 28 févr. 2006, 12:29
par heddicmi

Code : Tout sélectionner

$nom = eval(htmlspecialchars(\$result["cat_name_trans"]));
ou

Code : Tout sélectionner

$nom = eval(htmlspecialchars(\$result[\"cat_name_trans\"]));
Je dirais...

Posté : 28 févr. 2006, 12:58
par Invité
Aucun des deux ne fonctionne.

Le deuxième affiche une page blanche.

Avec le premier, la page s'affiche, mais rien ne s'affiche à la place de l'eval.

Posté : 28 févr. 2006, 13:00
par Invité
Notez que si je fais:

Code : Tout sélectionner

<?php eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";'); ?>
Cela fonctionne. Mais je dois associer cela à ma variable $nom

Posté : 28 févr. 2006, 13:04
par heddicmi
Dans ce cas :
eval("\$nom=htmlspecialchars(\$result[\"cat_name_trans\"]);");

Je pense que ça devrait être bon...

Posté : 28 févr. 2006, 13:16
par Invité
Il affiche maintenant :

$w[691] => $w[920]

Autrement dit, il n'a pas appliqué l'eval.

Je vais devenir fou!

Posté : 28 févr. 2006, 13:21
par heddicmi
Si tu exécutes la ligne :
$nom=htmlspecialchars($result["cat_name_trans"]);

Ca te donne ton résultat ?

(Mais au fait, pourquoi utiliser eval() ?) :oops:

Posté : 28 févr. 2006, 13:31
par Invité
En fait, j'ai des portions de codes php contenues dans des bases de données. C'est assez compliqué à vrai dire. Il faut donc que ces portions soient interprétées comme étant du code php.

Je suis parvenu à mes fins sur d'autres pages en faisant:

Code : Tout sélectionner

<?php eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";'); ?>

Et alors, au lieu de m'afficher le code contenu dans la base, par exemple:

Code : Tout sélectionner

$w[609] $w[610]
Ca m'affiche

Europe France

--------------------------------

Donc j'ai ceci qui fonctionne:

Code : Tout sélectionner

<?php eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";'); ?>
Je veux simplement le mettre dans ma variable nom. Mais cela ne fonctionne plus. Ca doit être un problème de syntaxe. Mais je planche.

Posté : 28 févr. 2006, 13:31
par Invité
Si tu exécutes la ligne :
$nom=htmlspecialchars($result["cat_name_trans"]);

Ca te donne ton résultat ?

(Mais au fait, pourquoi utiliser eval() ?) :oops:
OUi ca m'affiche le code php tel quel contenu dans la base

Posté : 28 févr. 2006, 13:39
par Invité
Si je fais:

Code : Tout sélectionner

eval('echo "'.$nom=htmlspecialchars($result["cat_name_trans"]).'";');
Ca fonctionne aussi mais cela affiche directement le resultat sur la page alors que je souhaite simplement le mettre dans la variable.

Posté : 28 févr. 2006, 13:46
par heddicmi
Si tu exécutes la ligne :
$nom=htmlspecialchars($result["cat_name_trans"]);

Ca te donne ton résultat ?

(Mais au fait, pourquoi utiliser eval() ?) :oops:
OUi ca m'affiche le code php tel quel contenu dans la base
Et bin c'est bon alors ? je comprends de moins en moins ce qui ne vas pas :roll:

Posté : 28 févr. 2006, 13:52
par Invité
Si je fais

Code : Tout sélectionner

$nom=htmlspecialchars($result["cat_name_trans"]); echo $nom
J'obtiens sur ma page: "$[609] $[610]"

Or, je devrais obtenir "Europe France"

Il faut que $[609] $[610] soit interpreté comme du code PHP, d'où le recours à la fonction eval.

----

Si je fais

Code : Tout sélectionner

eval('echo "'.htmlspecialchars($result["cat_name_trans"]).'";');
cela fonctionne. J'obtiens sur ma page : "Europe France" (non plus "$[609] $[610]")


Mais moi, je ne veux plus faire d'echo. Je veux stocker cela dans une variable $nom

Et c'est là que je m'embrouille probablement dans les guillements. J'aimerais une variable $nom qui stocke la valeur du echo fait plus haut.

Posté : 28 févr. 2006, 14:04
par Lorange
J'ai trouvé!!

Code : Tout sélectionner

eval('$nom='.htmlspecialchars($result["cat_name_trans"]).';');
Merci pour ton aide... tu m'as mis sur la voie! :D

Posté : 28 févr. 2006, 14:05
par heddicmi
eval('\$nom='.htmlspecialchars($result["cat_name_trans"]).';');
J'y crois à mort ce coup ci !

Posté : 28 févr. 2006, 14:16
par Invité
Oui avec le slash renversé ou sans ça fonctionne.

Merci encore pour tes tuyaux!