eval()’d code on line 1解决办法

By | 2011/07/20

php的eval函数是用来把一段文字当作一段php的脚本来执行,这样做的好处是我们可以动态修改php执行的内容。今天想实现的功能是:根据从浏览器get到的数据,使用eval()执行不同的函数:

1
2
3
4
5
6
if(isset($_GET['step'])){
    eval($_GET['step']);
}else{
    $content='<a href="?step=getipall">第一步:获取所有的ip地址</a>';
    msg($content);
}

注意,这个代码是有安全问题的,千万不要在生产环境中使用。

运行以上代码,提示 “eval()’d code on line 1”,根据提示来看是eval函数在执行的时候出错了。第一反应就跟google,结果得到的都是其他成品程序出现了这个错误。这时候还得去翻php手册,根据手册的描述:eval所执行的字符串,也得必须满足php的语法要求,很明显我的字符串里面缺少了括号和最后的分号。

知道原因解决就很简单了,修改eval的语句为“eval($_GET[‘step’].”();”);”,问题解决!

发表评论

电子邮件地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据