php - 如何将数据库中的php代码注入(inject)到php脚本中?

标签 php database templates code-injection

我想将 php 代码存储在我的数据库中,然后在我的脚本中使用它。

class A {
    public function getName() {
        return "lux";
    }
}
// instantiates a new A
$a = new A();

在我的数据库中有这样的数据

"hello {$a->getName()}, how are you ?"

在我的 php 代码中,我将数据加载到变量 $string

$string = load_data_from_db();
echo $string; // echoes hello {$a->getName()}, how are you ?

现在 $string 包含“你好 {$a->getName()},你好吗?”

{$a->getName()} 仍未解释

问题:我找不到如何编写其余代码,以便 {$a->getName()} 被解释为“hello lux,你好吗”。有人可以帮忙吗?

$new_string = ??????
echo $new_string; //echoes hello lux, how are you ?

有没有 eval() 的解决方案? (请不要争论邪恶的评估;))或任何其他解决方案?

最佳答案

看看eval() - 这就是你要找的东西(但我同意菲尔的观点,这听起来像是不好的做法)

编辑:刚刚看到您知道 eval - 那么您为什么不这样做:

eval('$string = "'.load_data_from_db().'";');

(还没有测试过这个,但我几乎可以肯定它有效)

关于php - 如何将数据库中的php代码注入(inject)到php脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3037833/

相关文章:

PHP PDO UPDATE MySQL 多个表

php - 如何在不依赖javascript的情况下决定用户的时区

php - ExtJS 和自动加载 URL

mysql - 来自同一个表的多个外键

sql - 数据库架构,数据库拆分

database - 安卓数据库备份

django - Heroku Django,模板不存在错误

php - firefox , IE6 和 opera 有不同的表现

C++ - 从类模板调用方法

C++如何使用相同的函数两次使用不同的名称和变量的不同名称