求助一个eval的简单问题 $t = 'echo "<p>: $te </p>";';$te = 'etst';eval ($t);如上..我想达到的效果就是上面的结果..eval太危险了..有没有别的办法呀.在线等! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 eval 没有什么危险的,他执行的都是你自己构造的代码。如果连自己都成了危险,那我也就无语了如果将同样的代码写入文件,然后 include 进来。按你的观点是否就安全了呢?eval 唯一的缺点是他所执行的代码未经预编译,临时编译必然影响效率当然并不是非要用 eval 的,比如$t = '<p>: $te </p>';$te = 'etst';echo preg_replace('/\$\w+/ise', '$0', $t);输出 <p>: etst </p>有点“模板”的味道了 哎...看来没有什么简便方法了.eval里的数据是ajx过来的..不敢直接eval.只有正则了 eval危险?????你用到的模板里支持php语法不就靠这个吗 不是..eval不危险..是数据不是我自己构的(ajax过来的)...所以危险! 类似的就行$code = 'echo 123;mysql_connect("localhost", "root", "root");';// 获取执行代码中的方法$r = '#(\w+)\([^)]*\);#';preg_match_all($r, $code, $funcArr);//echo '<pre>';print_r($funcArr);exit;// 设置可以被执行的方法或者不可以被执行的方法等$allows = array('echo', 'print', 'print_r', 'var_dump');// 或者//notAllows = array('mysql_connect', 'unlink', ...);if($funcArr[1]){ foreach($funcArr[1] as $func) { if(!in_array($func, $allows)) { exit('您正要执行无权限的代码,已经终止!'); } }}eval ($code); 我最终的做法是preg_replace('/\{(\$\w+\[?[\d\w]?\]?)\}/ise', '$1', $v)谢谢了.xuzuning 数据库的插入 PHP调用自己定义的一个数据库类时出现错误? php和xml混编有问、 php 打印等宽度 字符??? fck 里面问题多多,请教高手帮忙解决解决。 请教一个文件下载出错的问题 很基础的数组遍历的问题请教 如何快速架设PHP服务器? 网上申请的空间不支持session,在本机可支持,但传上去后却不支持.该如何处理? 求助,碰上文件上传的时候特慢 各位大大们,请给我分析下,下面的代码,最好能够具体点,谢谢哈。。等着的 控制器和视图之间传参时字符串前面莫名其妙多了“77u/”字符
如果连自己都成了危险,那我也就无语了如果将同样的代码写入文件,然后 include 进来。按你的观点是否就安全了呢?eval 唯一的缺点是他所执行的代码未经预编译,临时编译必然影响效率当然并不是非要用 eval 的,比如$t = '<p>: $te </p>';
$te = 'etst';echo preg_replace('/\$\w+/ise', '$0', $t);
输出 <p>: etst </p>有点“模板”的味道了
eval里的数据是ajx过来的..不敢直接eval.
只有正则了
$r = '#(\w+)\([^)]*\);#';
preg_match_all($r, $code, $funcArr);
//echo '<pre>';print_r($funcArr);exit;
// 设置可以被执行的方法或者不可以被执行的方法等
$allows = array('echo', 'print', 'print_r', 'var_dump');
// 或者
//notAllows = array('mysql_connect', 'unlink', ...);if($funcArr[1]){
foreach($funcArr[1] as $func)
{
if(!in_array($func, $allows))
{
exit('您正要执行无权限的代码,已经终止!');
}
}
}eval ($code);
preg_replace('/\{(\$\w+\[?[\d\w]?\]?)\}/ise', '$1', $v)谢谢了.xuzuning