Si j'avais du code PHP dans la base de données, est-ce que je pourrais "inclure" ça en PHP et l'exécuter? Eh bien, bien sûr que je pourrais écrire un fichier avec ce contenu et juste inclure ce fichier, mais peut-être que PHP a quelque chose de similaire à eval() de JavaScript?Est-il possible de charger un code PHP d'exécution hors de la base de données?
Répondre
Oui, PHP a également eval()
, mais il est considéré comme une très mauvaise pratique de l'utiliser.
This question discute bien les points majeurs, sans le condamner totalement.
Le plus souvent, si eval()
apparaît, il est utile de jeter un coup d'œil sur le programme que vous construisez: Il y a probablement une meilleure façon de le faire. Par exemple, si vous souhaitez remplir des valeurs de données dans du code HTML stocké dans une base de données, un moteur de création de modèles peut être une meilleure idée.
Oui. @OP, ne manquez pas la réponse de Roland Bouman ci-dessous, avertissant que votre autre solution proposée a tous les mêmes problèmes que 'eval()'. – grossvogel
Il existe eval() pour PHP. Mais s'il vous plait, ne l'utilisez jamais! : D
Vous pouvez évaluer un code en utilisant la fonction eval
- mais il est généralement considéré comme une mauvaise pratique, et un peu dangereux, pour l'utiliser.
(Eh bien, en fait, c'est le même nom de fonction que dans Javascript ;-) - et c'est une mauvaise pratique dans les deux langues - quelle coïncidence; ou non)
Une autre solution qui est parfois utilisée consiste à:
- ont votre code PHP dans une base de données
- vient le chercher parfois (pas à chaque fois) et le stocker dans un fichier, utilisé comme la mise en cache de mécanisme
include
ce fichier - qui sera exécuté
Je l'ai vu quelques-uns prett y vieux CMS fonctionnent de cette façon, par exemple ... Mais notez qu'ils utilisent principalement des fichiers comme cache (Pour ne pas faire trop de demandes à la base de données) - même si cela a très bien fonctionné.
Notez que l'utilisation eval()
mais écrire un fichier à partir du db et y compris qui auront exactement le même risque de sécurité que ... le point est pas tant à eval()
ou non eval()
le problème est le suivant: si quelqu'un hacks dans votre base de données, et a la possibilité de modifier le code PHP? Je serais capable d'avoir votre serveur exécuter leur script PHP, et faire ce qu'ils veulent.
Qu'en est-il de l'utilisation du cache de fichiers? Vous pouvez toujours stocker le code PHP temporairement dans le fichier et l'inclure. Logique simple avec génération de fichier, stockage dans le cache, y compris le fichier correct et l'actualisation des anciens fichiers (checksum md5 + cache de fichier fait timestamp + timestamp de modification). Il suffit ensuite de comparer les deux horodatages pour savoir si la mise à jour du cache est nécessaire.
- 1. Copier le mode hors connexion de la base de données
- 2. modèles FreeMarker Charger la base de données
- 3. Comment injecter le code php de la base de données dans le script php?
- 4. Est-il possible de charger une base de données dans la RAM?
- 5. Détacher la base de données/mettre hors ligne échoue
- 6. code php à base de données mysql export
- 7. Vérifier la base de données SQL hors ligne
- 8. ASP.NET MVC charger vue rasoir de la base de données
- 9. Synchronisation de base de données hors connexion avec le serveur
- 10. Mettre en surbrillance le code de la base de données
- 11. Cache hors ligne d'écriture de base de données en C#
- 12. Simulation de base de données PHP
- 13. Connexion php à la base de données
- 14. Connexion à la base de données PHP
- 15. Récupérer la liste de fichiers d'une base de données de serveur SQL hors ligne
- 16. PHP: Recherche dans la base de données
- 17. Changement de base de données en PHP
- 18. Existe-t-il un moyen de reconstruire la base de données d'achèvement de code Code :: Blocks?
- 19. problème de base de données PHP MySQL
- 20. Impossible de charger projet de base de données dans VS2008
- 21. Quelle devrait être la meilleure façon de charger les paramètres de la base de données?
- 22. Quels sont les inconvénients de l'implémentation des transactions hors de la base de données?
- 23. Générer un schéma de base de données et charger des données basées sur un fichier XML?
- 24. Est-il possible d'utiliser la base de données d'objets Zope de PHP?
- 25. code php pour insérer un fichier texte dans la base de données
- 26. Sauvegarde de la base de données MySql avec PHP
- 27. Problème de base de la classe php
- 28. Charger un tableau Javascript avec des données de base de données MYSQL
- 29. passe asp.net code javascript base de données
- 30. obtenir la valeur de base de données MySQL avec PHP
Question qui prend en réalité 2 secondes pour trouver la réponse sur google. Est-ce que les gens ont vraiment été si paresseux? – LukeP
Donc vous avez la réponse et ne l'avez pas posté? Qui est paresseux? Plusieurs fois, une recherche Google affiche StackOverflow avec la réponse. Je me demande comment la réponse est arrivée là ... – defines
@Dustin: J'ai googlé pour php eval et j'ai obtenu une page de manuel php avant de poster il y avait déjà 4 réponses ici. – LukeP