1

J'ai un petit problème : j'aimerai pouvoir associer des traitements spécifiques à des données, que ces traitements soient en PHP, et qu'ils ne soient pas dans un fichier mais dans une base de données.

On peut voir ça ainsi :
J'ai une base de données, dans laquelle se trouve une table telle que OPERATIONS
NoOperation(int)NomOperation(varchar)Operation(text
) 1nomNettoietrim($var) ; removeInappropriateChars($var)
;

Ensuite, je récupère le contenu du champ Operation et je l'exécute directement en PHP à l'intérieur de mon script (l'objectif étant qu'un utilisateur puisse créer de courts scripts sans à aller taper dans le code de MES scripts).

S'il n'y a pas de solution simple, je vois deux autres façons, mais ça m'embête un peu. La première, c'est de créer un fichier temporaire et d'inclure ce fichier temporaire au moment de l'exécution (j'ai vérifié, les includes ne se font pas au chargement du fichier, mais pendant l'exécution - en tout cas dans un environnement sans outils comme Zend-Optimizer).

La seconde est de ne pas stocker les scripts dans une base de données, mais qu'ils soient écrits dans plusieurs fichiers (ayant comme nom le NoOperation, par exemple).
avatar

2

http://fr3.php.net/manual/fr/function.eval.php

je suppose que t'y as pensé, mais ça me parait encore mieux que "; DELETE FROM users; --" ton truc là grin

3

Arf, merci, c'est ce que je voulais. J'avais complètement oublié cette fonction, et pour cause, je ne l'avais jamais utilisée auparavant justement à cause des risques que ça pose grin

Concrètement, pour l'application actuelle, je me fiche totalement qu'on puisse mettre "; DELETE FROM users; --" dedans. C'est une application destinée à n'être utilisée que par des développeurs qui auraient - de toutes façons - accès aux bases de données et aux scripts, donc qui pourraient faire tout et n'importe quoi de toutes façons. Là, l'objectif est de permettre d'avoir un outil centralisé pour tout un tas de procédures liées à des synchronisations de données, pour lesquelles on peut avoir à effectuer de petits traitements (mais je ne peux pas être exhaustif sur les traitements qui peuvent être faits).
Au début, je pensais ne proposer que des traitements via des expressions régulières + une série d'opérations "types", mais ça ne suffit pas (loin de là). J'ai pas trouvé mieux.
A titre de comparaison, MIIS (qui est le super outil de Microsoft qui fait +/- [enfin, plutôt plus que moins grin] ce que je suis en train de faire) ne fait pas beaucoup mieux, puisque les gestionnaires doivent développer des dll pour chaque traitement. La seule chose (et non des moindres) c'est que ces dll ne peuvent pas attenter à l'application. Par contre, le contenu des scripts peut tout à fait atteindre les bases de données ^^.
avatar

4

oui, d'où mon "je suppose que t'y as déja pensé" grin

5

Enfin, si jamais tu as une solution plus propre, ça me va aussi, hein grin (sans passer par l'écriture de mon propre langage de script en PHP triso). Disons que la solution actuelle est plus un moindre mal qu'autre chose.
avatar

6

Nil (./5) :
Enfin, si jamais tu as une solution plus propre, ça me va aussi, hein biggrin.gif
heu nan grin
Nil (./5) :
(sans passer par l'écriture de mon propre langage de script en PHP triso.gif )
trilove

je crois qu'eval() est le plus simple/rapide pour ce que tu veux faire ^^