热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP中eval()的小技巧php函数

PHP中eval()


PHP中eval()的小技巧

eval()函数是php中一个大家都希望禁止的函数,eval()函数非常的危险哦,下面我来给大家介绍php中eval()函数的一些问题与解决办法.

一直以来感觉eval()函数似乎不能做赋值运算?网上有些文章也这样说过!比如eval("$a=;");这个式子就会提示错误!是不是eval()函数执行的代码不能做赋值运算了呢,其实不是.这是因为双引号里的变量名被转义了,试问,常量怎么能被赋值呢?不过PHP中,单引号里的变量名就不会被转义了,上面的代码改成eval('$a=;');这样就没错误了哦!

eval()一个有意思的PHP函数

通过代码测试,不做更多解释:

实例代码如下:



Parse error: syntax error, unexpected  'echo'  (T_ECHO) in E:webwwwswoole_testeval.php(4) :  eval ()'d code on line 1  
 word!  
 */  
               
 ?> 

二、当字符串里有不合法的php代码时,报错.相信大家也都知道!

实例代码如下:



 
  $str  =  '你好,世界! echo "Hello,";' ;  
  $content  =  eval ( '?>' . $str );   // 注意,此时eval里 加了  "?>" 字符串   
  echo   'word!' ;  
  // 执行结果:    
  /*   
  你好,世界! echo "Hello,";word!   
 */   
  ?> 

三、此时,字符串里面有不合法的 php 代码,但是,不报错了.

因为前面加了"?>"(php结束符),它已经将后面的[字符串]全部当作[字符串]了,是吧!下面在(三)的基础上,在字符串里嵌入模块,相当于html文件里嵌入 php代码一样.它会怎样呢?

实例代码如下:



  $str  =  '你好,世界! ' ;  
  $content  =  eval ( '?>' . $str );  
  echo   'word!' ;  
  // 执行结果:    
  /*   
  你好,世界! Hello,word!   
 */  
 ?> 

OK!它会识别 [字符串] 里的 php模块并执行!

上面的例子其实说明了 eval('?>'.$str) 和 eval($str)的作用.其实,eval($str)的 $str 里面,如果字符串包含有时,那么$str字符串就必须在前加上 [?>]个php的结束符.

在Ecshop的模版引擎里面,就用了eval('?>'.$str)这种方法,来解析模版中嵌入的php模块---当然在此之前,先将标签解析翻译成了php代码.



推荐阅读
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 在Windows10系统上使用VMware创建CentOS虚拟机的详细步骤教程
    本文详细介绍了在Windows10系统上使用VMware创建CentOS虚拟机的步骤,包括准备条件、安装VMware、下载CentOS ISO文件、创建虚拟机并进行自定义配置、设置虚拟机的ISO与网络、进行安装和配置等。通过本文的指导,读者可以轻松地创建自己的CentOS虚拟机并进行相应的配置和操作。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
    一、根据题意,填写出空格中的内容Java平台包括三个技术方向,其中J2ME代表____________、J2SE代表___________、J2EE代表 ... [详细]
  • fileuploadJS@sectionscripts{<scriptsrc~Contentjsfileuploadvendorjquery.ui.widget.js ... [详细]
  • 电商系统设计艺术——秒杀业务设计
    一、秒杀场景人多货少,只有少量的人能够抢购成功。高并发,秒杀业务在开始之前流量比较平稳,开始后流量会直线性的上升。持续时间短࿰ ... [详细]
  • 【宇润日常疯测007】Swoole 协程与传统 fpm 同步模式比较
    为什么80%的码农都做不了架构师?如果说数组是PHP的精髓,数组玩得不6的,根本不能算是会用PHP。那协程对于Swoole也是同理& ... [详细]
author-avatar
p情绪控
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有