nouvelle gestion des objets...

Petit nouveau ! | 1 Messages

10 nov. 2009, 14:40

flute ! mon code générique écrit en easyPHP 1.8 ne fonctionne plus ! quelqu'un a une idée ?

<?
$tpl = $_GET["tpl"];
include_once ("$tpl.php") ;
${$tpl} = new $tpl() ;
${$tpl}->submit($data) ;
?>

submit étant une méthode publique qui se trouve dans toutes mes classes passées en paramètre du code générique ($tpl = $_GET["tpl"];)

Résultat ? au lieu d'appeler submit($data), il affiche "submit($data) ;?>" à l'écran !!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

10 nov. 2009, 15:00

Utilise <?php au lieu de <?, la config par défaut de php a changé depuis...

Je déplace dans PHPDebutant

ViPHP
ViPHP | 1996 Messages

10 nov. 2009, 22:16

Bonsoir,

je dirai d'abord que d'inclure des variable venant de $_GET sans tests est vraiment dangeureux (mais je pense que tu nous a pas montré tout le code).
Je ne connais pas cette écriture :
${$tpl} = new $tpl() ;
Si je reste conforme à ce que je connais j'écrirais :
<?php
$tpl = $_GET["tpl"];
include_once ("$tpl.php") ;
$variable = new $tpl() ;
$variable->submit($data) ;
?>
Sinon éclaires moi sur les accolades dans les variables...

EDIT : je viesn de voir qu'il s'agissait de variables dynamiques....
Dans ce cas est ce que $_GET["tpl"] est renseigné ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
fab
ViPHP | 2657 Messages

11 nov. 2009, 02:29

<?php
$tpl = $_GET["tpl"];
include_once ("$tpl.php") ;
$variable = new $tpl() ;
$variable->submit($data) ;
?>

Niveau sécurité c'est pareil d'inclure directement la variable provenant que $_GET que ce que tu viens de montrer, si je place un fichier sans extension ( exemple : http://toto.com/hack.php et en get je passe http://toto.com/hack ) le contenu du fichier distant hack.php sera interprété et là bonjour les dégats ...
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
ViPHP | 1996 Messages

11 nov. 2009, 11:15

Je suis d'accord, c'est pourquoi je fais toujours dans ces cas là un : switch + case + defaut. Au moins on sait quoi inclure ou pas...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr