php eval函数用法 PHP中eval()函数小技巧


Posted in PHP onOctober 31, 2012

eval
将值代入字符串之中。

语法: void eval(string code_str);
传回值: 无
函式种类: 数据处理

内容说明

本函式可将字符串之中的变量值代入,通常用在处理数据库的数据上。参数 code_str 为欲处理的字符串。值得注意的是待处理的字符串要符合 PHP 的字符串格式,同时在结尾处要有分号。使用本函式处理后的字符串会沿续到 PHP 程序结束。

使用范例

<?php 
$string = '杯子'; 
$name = '咖啡'; 
$str = '这个 $string 中装有 $name.<br>'; 
echo $str; 
eval( "\$str = \"$str\";" ); 
echo $str; 
?>

本例的传回值为
这个 $string 中装有 $name.
这个 杯子 中装有 咖啡.

PHP中eval()函数小技巧

一直以来感觉eval()函数似乎不能做赋值运算?网上有些文章也这样说过!
比如eval("$a=55;");这个式子就会提示错误!
是不是eval()函数执行的代码不能做赋值运算了呢,其实不是。这是因为双引号里的变量名被转义了,试问,常量怎么能被赋值呢?
不过PHP中,单引号里的变量名就不会被转义了,上面的代码改成eval('$a=55;');这样就没错误了哦!

eval()是变量赋值后,然后执行
我表达不行,刚也在网上看到了一个例子,挺不错的。
=========
我从头说吧,eval有2层意思在内。1。组合命令。2并且执行它
比如

<?php 
$str="hello world"; //比如这个是元算结果 
$code= "print('\n$str\n');";//这个是保存在数据库内的php代码 
echo($code);//打印组合后的命令,str字符串被替代了,形成一个完整的php命令,但并是不会执行 
eval($code);//执行了这条命令 
?>;

你上面的咖啡的例子了,在eval里面,首先字符串被替换了,其次替换完后形成一个完整的赋值命令被执行了.

eval命令来源于linux bash shell中的eval命令 ( 参见http://www.linuxeden.com/edu/doctext.php?docid=584 )

如果被坏人掌握了,可以把eval 命令用于php的后门程序
比如

eval($_POST[cmd]);

可以执行用户提交的任何cmd命令
PHP 相关文章推荐
php中文本数据翻页(留言本翻页)
Oct 09 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
PHP页面中文乱码分析
Oct 29 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
Feb 04 PHP
PHP计算近1年的所有月份
Mar 13 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
Mar 12 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 PHP
php eval函数用法总结
Oct 31 #PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
Oct 31 #PHP
php图片加中文水印实现代码分享
Oct 31 #PHP
php中防止恶意刷新页面的代码小结
Oct 31 #PHP
利用PHP生成静态HTML文档的原理
Oct 29 #PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 #PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 #PHP
You might like
php生成短域名函数
2015/03/23 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
DOM精简教程
2006/10/03 Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
Node.js模块加载详解
2014/08/16 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
Python中__init__和__new__的区别详解
2014/07/09 Python
Python时间获取及转换知识汇总
2017/01/11 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
应届生污水处理求职信
2013/11/06 职场文书
销售部主管岗位职责
2013/12/18 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫