这是我的代码;
$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
有什么想法吗?
答案 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;
?>