在这种情况下我可以使用eval函数吗?

时间:2014-12-04 08:13:10

标签: php eval

我怎么能得到以下代码来打印出aaa.bbb.ccc? 目前,我得到的是每个eval()行的解析错误。 这是一个抽象代码版本。最后,我希望用户能够选择要搜索的数据库表的字段。像是组合的东西 if(strpos(" $ field1。$ field2。$ field3",$ search)!== false)...

$filter = "\$x=\$a.\$b.\$c";

$a = "a";
$b = "a";
$c = "a";
eval($filter);
echo $x.",";

$a = "b";
$b = "b";
$c = "b";
eval($filter);
echo $x.",";

$a = "c";
$b = "c";
$c = "c";
eval($filter);
echo $x;

1 个答案:

答案 0 :(得分:1)

要修复当前代码,请更改以下内容:

$filter = "\$x=\$a.\$b.\$c";

$filter = '$x=$a.$b.$c;';

但是在用户输入上使用eval()是代码中的一个很大的安全漏洞。尝试一些不同的方法,例如使用正则表达式和$search函数检查preg_match_all()中是否存在输入。