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 相关文章推荐
sqlyog 中文乱码问题的设置方法
Oct 19 PHP
php xml实例 留言本
Mar 20 PHP
php 生成随机验证码图片代码
Feb 08 PHP
几款免费开源的不用数据库的php的cms
Dec 19 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
PHP错误和异长常处理总结
Mar 06 PHP
PHP header()函数常用方法总结
Apr 11 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
php批量删除操作(数据访问)
May 23 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 PHP
多个Laravel项目如何共用migrations详解
Sep 25 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打开和关闭文件操作函数总结
2014/11/18 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
js实现简单的验证码
2015/12/25 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
python中的decorator的作用详解
2018/07/26 Python
python使用zip将list转为json的方法
2018/12/31 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
Python单元测试与测试用例简析
2019/11/09 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
软件配置管理有什么好处
2015/04/15 面试题
车辆维修工自我评价怎么写
2013/09/20 职场文书
学生自我鉴定范文
2013/10/04 职场文书
保健品市场营销方案
2014/03/31 职场文书
学生党员公开承诺书
2014/05/28 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android