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 相关文章推荐
让你的网站首页自动选择语言转跳
Dec 06 PHP
php连接mysql数据库代码
Mar 10 PHP
20个PHP常用类库小结
Sep 11 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
php实现的常见排序算法汇总
Sep 08 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
PHP闭包函数详解
Feb 13 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 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
YII模块实现绑定二级域名的方法
2014/07/09 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
laravel学习教程之存取器
2016/07/30 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
社会发展项目建议书
2014/08/25 职场文书
农村党员对照检查材料
2014/09/24 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
军训个人总结
2015/03/03 职场文书
《称赞》教学反思
2016/02/17 职场文书
公证书
2019/04/17 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书