【问题标题】:PHP create_function returns falsePHP create_function 返回 false
【发布时间】:2013-10-28 18:24:27
【问题描述】:

情况:

这行得通:

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

但问题是 funcitonCode 是动态的,其中的布尔表达式可以变化(取自数据库)。令人困惑的是,当我从数据库中检索 SAME functionCode 并将其分配给变量时,create_function 返回的 $newfunc 始终为 false。

有什么想法吗?谢谢

【问题讨论】:

  • 您确定报价没有被转义吗?更重要的是,为什么要从数据库构建函数?如果有人有机会将 SQL 注入您,他们可能会造成严重损害。
  • 我尝试使用 PHP 内置函数添加斜杠来转义整个函数代码,失败,$newfunc 总是错误的。 (尽管我感谢您的关注,但在这种情况下忘记 sqlinjection)

标签: php lambda create-function


【解决方案1】:

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

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

【讨论】:

  • 什么意思?我看不出你的代码和我的代码有什么不同。谢谢。
  • 我说不要使用 != 而是使用 !==
猜你喜欢
  • 2013-04-30
  • 2018-10-30
  • 2011-09-10
  • 2012-08-27
  • 2013-01-25
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多