You are here

Drupal专业开发指南 第20章 使用eval()

g089h515r806 的头像
Submitted by g089h515r806 on 星期四, 2009-08-27 13:40

千万不要使用它。使用PHP函数eval(),你可能觉得它是进行元编程的极好的方式,或者想用它来减少多行代码,这个函数将一个字符串文本作为输入,并使用PHP解释器对其求值。这完全是一个错误。如果有任何方式允许一个用户使用eval()来操作输入的话,那么你就会将PHP解释器的威力暴露给用户。这距离泄露私密数据的时间也不会太长了,因为用户就可能使用这一方式来获取你的数据库中的用户名和密码。

这也是为什么你只能在Drupal后台管理接口中使用PHP过滤器的原因,而且只有在非常特定的环境中并具有相关授权的前提下才使用它。为了能够睡个安稳觉,避免使用eval()和PHP过滤器。Drupal的确在其内核中使用了eval(),但是情况非常少,并且使用了drupal_eval()对其进行封装,drupal_eval()可以阻止要进行估值的代码,覆盖调用drupal_eval()的代码中的变量。drupal_eval()位于includes/common.inc。
 老葛的Drupal培训班 Think in Drupal

Drupal版本: