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 相关文章推荐
第四节 构造函数和析构函数 [4]
Oct 09 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
php四种基础算法代码实例
Oct 29 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
phpfpm的作用和用法
Oct 10 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
jquery实现的美女拼图游戏实例
2015/05/04 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
pymongo中group by的操作方法教程
2019/03/22 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
雷蛇美国官网:Razer
2020/04/03 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
师德师风的心得体会
2014/09/02 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
民事二审代理词
2015/05/25 职场文书
使用scrapy实现增量式爬取方式
2022/06/21 Python