Page 1 sur 1

probleme avec date dans eval()

Posté : 18 oct. 2010, 15:14
par jeanpba
Bonjour

je cherche à utiliser la fonction eval
j'écris ma chaine avant, ici la fonction date() avec un point vigurle à la fin,
je fais ensuite l'eval et rien ne se passe
directement, la meme fonction date() marche bien
voici mon code :

<?php

$chaine = "date('d/M/Y Hms') ; " ;

echo "<p>[".eval( $chaine )."]</p>" ;

echo "<p>.[".date( 'd/M/Y Hms' )."].</p>" ;

?>

que pensez - vous de cela ?

pendant mes recherches, j'ai aussi essayé les apostrophes inversées , comme en perl :
`$chaine`;

et rien ne se passe !

j'ai regardé dans mon php.ini, je n'ai pas déclaré eval comme etant une fonction disable
et si j'omets le point virgule, j'obtiens bien une erreur, normale !

Qu'ais-je oublié à votre avis ?

Merci de vos lumieres

JP

Re: probleme avec date dans eval()

Posté : 18 oct. 2010, 15:16
par stealth35
pourquoi tu fais un eval ?

Re: probleme avec date dans eval()

Posté : 18 oct. 2010, 15:27
par jeanpba
salut stealth35

je fais un eval car j'ai en fait un tableau de chaines qui sont differents formatages de date et je veux les evaluer en fonction du langage du navigateur

j'ai bien conscience du trou de sécurité mais je voudrais savoir pourquoi eval ne marche pas !

a++

Re: probleme avec date dans eval()

Posté : 18 oct. 2010, 15:37
par stealth35
je fais un eval car j'ai en fait un tableau de chaines qui sont differents formatages de date et je veux les evaluer en fonction du langage du navigateur
t'as pas besoin de eval pour faire ca

Re: probleme avec date dans eval()

Posté : 18 oct. 2010, 16:36
par AB
Je vois pas non plus pourquoi tu as pensé qu'il fallait utiliser eval. Donnes nous un exemple un peu plus complet ...

Re: probleme avec date dans eval()

Posté : 20 oct. 2010, 12:58
par jeanpba
salut !

j'ai voulu faire :

$string1 = "date('d/M/Y') ;" ;
$string2 = "date('Y/M/d') ;" ;

et dans un test
if ( strcmp( $lang , "fr" ) ) eval $string1 ;
else
eval $string2 ;

bon, finalement, j'ai mis la chaine de la date dans un tableau indicé par le langage et ca marche bien : ok

par contre , je ne comprends par pourquoi eval ne marche pas !

A++

jean-philippe

Re: probleme avec date dans eval()

Posté : 21 oct. 2010, 10:30
par jojolapine
Et pourquoi ne pas faire:
$formats_date = array(
'fr'=>'d/M/Y',
'en'=>'Y/M/d'
);

$lang = 'fr';

echo date($formats_date[$lang]);

Re: probleme avec date dans eval()

Posté : 21 oct. 2010, 11:06
par jeanpba
oui , finalement c'est ce que j'ai fait mais je ne comprends pas pourquoi l'eval ne marche pas
A+

JP

Re: probleme avec date dans eval()

Posté : 21 oct. 2010, 11:10
par stealth35
oui , finalement c'est ce que j'ai fait mais je ne comprends pas pourquoi l'eval ne marche pas
A+

JP
$chaine = "return date('d/M/Y Hms') ; " ;
echo "<p>[".eval($chaine)."]</p>" ;
echo "<p>.[".date( 'd/M/Y Hms' )."].</p>" ;

Re: probleme avec date dans eval()

Posté : 21 oct. 2010, 12:03
par jeanpba
ok, merci, je n'avais pas compris le return!
a+

JP

Re: probleme avec date dans eval()

Posté : 21 oct. 2010, 17:01
par AB
Inutile de préciser qu'il faut éviter d'employer eval puisqu'une chaine sera interprétée... à n'utiliser donc que pour des cas exceptionnels (et c'est pour cette raison que ta question nous étonnait dans ce contexte).