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 输出缓存详解
Jun 20 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
php文本转图片自动换行的方法
Mar 13 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
跟我学Laravel之配置Laravel
Oct 15 PHP
php恢复数组的key为数字序列的方法
Apr 28 PHP
php常用图片处理类
Mar 16 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 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
解析thinkphp中的导入文件标签
2013/06/20 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
php实现的SESSION类
2014/12/02 PHP
基于php判断客户端类型
2016/10/14 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
js 操作select相关方法函数
2009/12/06 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
python实现解数独程序代码
2017/04/12 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
python处理数据,存进hive表的方法
2018/07/04 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
python微信公众号开发简单流程实现
2020/03/09 Python
python 字符串格式化的示例
2020/09/21 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
学期自我评价
2014/01/27 职场文书
竞选班委演讲稿
2014/04/28 职场文书
委托函范文
2015/01/29 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
Redis数据结构之链表与字典的使用
2021/05/11 Redis
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技