Page 1 sur 1

nouvelle gestion des objets...

Posté : 10 nov. 2009, 14:40
par unpetitpeudetout
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 !!

Re: nouvelle gestion des objets...

Posté : 10 nov. 2009, 15:00
par ouckileou
Utilise <?php au lieu de <?, la config par défaut de php a changé depuis...

Je déplace dans PHPDebutant

Re: nouvelle gestion des objets...

Posté : 10 nov. 2009, 22:16
par Aureusms
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é ?

Re: nouvelle gestion des objets...

Posté : 11 nov. 2009, 02:29
par fab
<?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 ...

Re: nouvelle gestion des objets...

Posté : 11 nov. 2009, 11:15
par Aureusms
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...