PHPPHP经验分享我爱编程

如何执行字符串的PHP代码

2016-12-12  本文已影响476人  Dorm_Script

最近因项目需要,引出一个议题:如何执行字符串的php代码(php和html混写)。
注:传统情况下,php代码存储在文件中,直接运行文件即可。以下讨论的情况是,如果php代码是从数据库中获取到,那么要如何运行?

最直观的方案

进一步的瞎想

几种思路的验证

Caution :The eval() language construct is very dangerous because it allows execution of arbitrary PHP code. Its use thus is discouraged. If you have carefully verified that there is no other option than to use this construct, pay special attention not to pass any user provided data into it without properly validating it beforehand.

总结

现在已经有3种方式可以做成这个事情,那么哪种方式更好
1:写临时文件,加缓存,直接include
2: eval,官方手册上说这个函数有安全问题
3:自定义协议,直接include

首先排除方法1,原因1:缓存文件会增加硬盘I/O。原因2:不够专业(这不是小问题)
至于eval提到的安全问题,仔细阅读手册上写的那段话后,发现他只是提示你现在正在运行一段项目代码以外的代码,请多小心。这样看来,方法2并没有比方法3更危险。


选取标准,如果项目中只有一个很小的功能需要执行php字符串,那直接使用eval即可
如果项目中有大量的此类需求,封装一个自定义协议会很方便。项目中的引用会是这样的: include("protocolName://param");

好吧,以上提供的大部分都是思路,希望思路对你有用

上一篇下一篇

猜你喜欢

热点阅读