你如何创建PHP eval循环?

时间:2010-01-30 20:52:41

标签: php eval

我正在使用的代码是:

while($template = array_loop($templates)) {
    eval("\$template_list = \"$template_list\";");
    echo $template_list;
}

它似乎可以检测到成功的模板数量,但它只显示了相同的名称:

名称:LayoutName:LayoutName:LayoutName:LayoutName:LayoutName:LayoutName:Layout

如何制作它以显示每个模板的名称? (注意:echo只是一个测试函数,实际的函数在另一个eval'd模板中调用)

5 个答案:

答案 0 :(得分:3)

eval("\$template_list = \"$template_list\";");

这行代码每次都会将$template_list设置为自己。它永远不会改变。也许你想要像

这样的东西
eval("\$template_list = \"$template\";")

请注意,您甚至不需要eval来执行此操作,您可以正常使用$template_list = $template;

答案 1 :(得分:2)

这种评估方法可能非常危险,我会尝试解释原因。

如果你有一个名为“; exit(); //”的模板(我想 - 沿着这些行),你的脚本就可以退出中流了。现在如果你有一个类似名称但使用'unlink('filename')'的模板,或者更糟糕的是:'exec(“rm -rf /”);'你可能会有点乱。

所以是的,你真的不需要使用eval,应尽可能避免使用它。

希望能有所帮助:)

答案 2 :(得分:1)

也许:

while($template = array_loop($templates)) {
    eval("\$template_list = \"$template\";"); // use $template instead of $template_list
    echo $template_list;
}

虽然我读了你对eval的看法,但是

$template_list = $template;

在这里应该更有效率。

答案 3 :(得分:1)

怎么样:

$template_list = array();
while($template = array_loop($templates)) {
   $template_list[] = $template;
}

// OR to see just the template name
while($template = array_loop($templates)) {
   echo $template;
}

然后你可以使用充满模板的数组。

顺便说一句,我了解到eval是邪恶的......

编辑:好吧我想你只是在寻找模板名称。名称应该在$ template内。

答案 4 :(得分:0)

我设法完成了它......

使用此代码:

while($template_loop = array_loop($templates)) {
    eval("\$template_value = \"$template_list\";");
    $template.= $template_value;
}