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 相关文章推荐
在普通HTTP上安全地传输密码
Jul 21 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
php实现的CSS更新类实例
Sep 22 PHP
PHP版QQ互联OAuth示例代码分享
Jul 05 PHP
php cli配置文件问题分析
Oct 15 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 PHP
PHP日期和时间函数的使用示例详解
Aug 06 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
计数器详细设计
2006/10/09 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
理解JavaScript中的事件
2006/09/23 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
js实现select下拉框选择
2020/01/11 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Django Form常用功能及代码示例
2020/10/13 Python
Python内置函数及功能简介汇总
2020/10/13 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
kfc实习自我鉴定
2013/12/14 职场文书
学校大课间活动方案
2014/01/30 职场文书
广告学专业求职信
2014/06/19 职场文书
化妆品促销活动总结
2015/05/07 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
Python经常使用的一些内置函数
2022/04/11 Python