2013-10-28 122 views
0

现状:PHP create_function返回false

这工作:

$functionCode = 'return ($myvar1 == "something") && ($myvar2 != "");'; 
$newfunc = create_function($functionParamsConcat, $functionCode); 

但问题是,funcitonCode是动态的,且布尔表达式里面可以改变(这是从数据库中获取)。 confussing部分是,当我从数据库中检索SAME functionCode并将其分配给变量时,create_function返回的$ newfunc始终为false。

任何想法?谢谢

+0

您确定引文不会被转义吗?更重要的是,你为什么要从数据库中构建函数?如果有人有机会注入SQL,他们可能会造成严重的损失。 –

+0

我尝试使用PHP内置的函数addslashes来转义整个functionCode,失败,$ newfunc总是为false。 (在这种情况下忘记sqlinjection,虽然我感谢您的关注) – mpinvidio

回答

0

$ functionCode = '回报($ myvar1 == “东西”)& &($ myvar2 = “!”);'; $ newfunc = create_function($ functionParamsConcat,$ functionCode);

在检查不使用=,因为它会设置它,但使用==或者===
!使用!==

+0

你是什么意思?我没有看到你的代码与我的区别。谢谢。 – mpinvidio

+0

我说不要使用!=但是使用!== –