php的eval函数是用来把一段文字当作一段php的脚本来执行,这样做的好处是我们可以动态修改php执行的内容。今天想实现的功能是:根据从浏览器get到的数据,使用eval()执行不同的函数:
if(isset($_GET['step'])){
eval($_GET['step']);
}else{
$content='第一步:获取所有的ip地址';
msg($content);
}
注意,这个代码是有安全问题的,千万不要在生产环境中使用。
运行以上代码,提示 “eval()’d code on line 1”,根据提示来看是eval函数在执行的时候出错了。第一反应就跟google,结果得到的都是其他成品程序出现了这个错误。这时候还得去翻php手册,根据手册的描述:eval所执行的字符串,也得必须满足php的语法要求,很明显我的字符串里面缺少了括号和最后的分号。
知道原因解决就很简单了,修改eval的语句为“eval($_GET[‘step’].”();”);”,问题解决!