从数据库加载时的eval错误

时间:2012-05-12 22:19:46

标签: php mysql eval

这是我的代码;

$script = $row['script']; 

   // $row is from database and the $row['script'] is exeactly the same with $script commented below.
  // $script ="global \$timedate;\$target =\$timedate->now();return \$target;";

return eval($script);

当我取消注释$脚本时,它将正确运行。但是,如果我传入$ script并从$ row ['script']加载值,则eval得到以下错误:

 [12-May-2012 22:09:25 UTC] PHP Parse error:  syntax error, unexpected $end in C:\Users\iopen\Documents\IOPEN\Project\Clients\sugarcrm\hfcrmlocal\custom\modules\iopenwf\model\IOpenAction.php(56) : eval()'d code on line 3

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

不要使用eval这是一个非常糟糕的主意。

出于实验目的,您可以使用stripslashes删除大多数斜杠问题

class Test {
    function now() {
        return time ();
    }
}

$timedate = new Test ();
$script = "global \$timedate;\$target =\$timedate->now();return \$target;";
$script = stripslashes ( $script );
var_dump ( eval ( $script ) );

答案 1 :(得分:0)

尝试制作您的脚本功能,以便以后编辑更容易,您将获得更好的概述。 正如你可以看到的那样,我删除了eval();功能。现在它完成了这项工作。我不确定为什么你需要eval(),但是下面的脚本,没有eval();需要的。

<?php
   function getScript() {
      $script = 1;  
      // $row is from database and the $row['script'] is exeactly the same with $script commented below.
      // $script ="global \$timedate;\$target =\$timedate->now();return \$target;";
      return $script;
      }
   $scriptNo = getScript();
   echo $scriptNo;
?>