当前位置: 首页 > news >正文

【PHP + 代码审计】函数详解2.0

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

静态变量

可变函数

匿名函数

基本概念

闭包

伪类型


静态变量

静态变量:static,是在函数内部定义的变量,使用static关键字修饰,用来实现跨函数共享数据的变量:函数运行结束所有局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化。

基本语法:
Function 函数名(){//定义变量Static $变量名 = 值;    //通常会在定义的时候就直接赋值
}

静态变量的作用是为了跨函数共享数据(同一个函数被多次调用)

  • 静态变量的原理:系统在进行编译的时候就会对static这一行进行初始化:为静态变量赋值
  • 函数在调用的时候,会自动跳过static关键字这一行

可变函数

可变函数:当前有一个变量所保存到值,刚好是一个函数的名字,那么就可以使用变量+()来充当函数名使用。

<?php
//可变函数
//定义系统函数
function sys_function($arg1,$arg2)
{//给指定的函数($arg1),求对应的第二个参数的4次方($arg2)$arg2 = $arg2 + 10;return $arg1($arg2);    //user_function(20)
}//定义一个用户函数:求一个数的4次方
function user_function($num)
{return $num * $num * $num * $num;
}//求10的4次方
echo sys_function('user_function',10);

可变函数在系统使用的过程中还是比较多的,尤其是使用很多系统函数的时候:需要用户在外部定义一个自定义函数,但是是需要传入到系统函数内部使用。

匿名函数

基本概念

匿名函数:没有名字的函数基本语法:变量名 = Function(){函数体};

变量保存匿名函数,本质得到的是一个对象(Closure)

闭包

  • 闭包:closure, 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)
  • 简单理解:函数内部有一些局部变量(要执行的代码块)在函数执行之后没有被释放,是因为在函数内部还有对应的函数在引用(函数的内部函数:匿名函数)

<?php
//闭包函数
function display()
{//定义变量:局部变量$name = __FUNCTION__;//定义匿名函数$innerfunction = function() use($name){   //use 就是相当于Java中的继承,就是$name的东西留给$innerfunction函数//内部函数echo  $name;};//调用函数$innerfunction();
}display();

证明:函数的局部变量在函数使用完之后没有被释放?

1、 使用内部匿名函数;

2、 匿名函数使用句变量:use;

3、 匿名函数被返回给外部使用;

伪类型

伪类型:假类型,实际上在PHP中不存在的类型。但是通过伪类型可以帮助程序员去更好的查看操作手册从而更方便学习。

伪类型主要有两种:在三大类八小类之外

Mixed:混合的,可以是多种PHP中的数据类型

Number:数值的,可以是任意数值类型(整形和浮点型)

常用系统函数

1)有关输出的函数

print():类似于echo输出提供的内容,本质是一种结构(不是函数),返回1,可以不需要使用括号

print_r():类似于var_dump,但是比var_dump简单,不会输出数据的类型,只会输出值(数组打印使用比较多)

2)有关时间的函数

date():按照指定格式对对应的时间戳(从1970年格林威治时间开始计算的秒数),如果没有指定特定的时间戳,那么就是默认解释当前时间戳

time():获取当前时间对应的时间戳

microtime():获取微秒级别的时间

Strtotime():按照规定格式的字符串转换成时间戳

3)有关数学的函数

max():指定参数中最大的值
min():比较两个数中较小的值
rand():得到一个随机数,指定区间的随机整数
mt_rand():与rand一样,只是底层结构不一样,效率比rand高(建议使用)
round():四舍五入
ceil():向上取整
floor():向下取整
pow():求指定数字的指定指数次结果:pow(2,8) == 2^8 == 256
abs():绝对值
sqrt():求平方根

4)有关函数的函数

function_exists():判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码安全性更高)

func_get_arg():在自定义函数中去获取指定数值对应的参数

func_get_args():在自定义函数中获取所有的参数(数组)

func_num_args():获取当前自定义函数的参数数量

echo '<br/><pre>';
function test($a,$b)
{//获取指定参数var_dump(func_get_arg(1));//获取所以参数var_dump(func_get_args());//获取参数数量var_dump(func_num_args());
}//调用函数
function_exists('test') && test(1,'2',3,4);

相关文章:

【PHP + 代码审计】函数详解2.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…...

宠物智能喂食机方案设计

我们都知道&#xff0c;现如今养宠物的人群已经很多了&#xff0c;主要是青年人居多&#xff0c;他们在独自漂泊的在外的工作&#xff0c;免不了情感泛滥&#xff0c;养一些小动物也是在预料之中。但由于工作或者其他各种因数&#xff0c;养宠人不可时时刻刻在家&#xff0c;对…...

测试直播打赏需要考虑哪些测试要点?

1.功能测试&#xff1a; 1、检查打赏功能是否正确 &#xff1a;检查打赏操作是否可以正常进行 2、 赞赏余额是否正确&#xff1a; 检查赞赏者和被赞赏者的余额是否正确 3、赞赏交易记录是否正确&#xff1a; 检查赞赏者和被赞赏者的交易记录是否正确&#xff1b; 4、检查赞…...

Python练习(续)

练习1:用户登录注册案例 import sysidname {test:123456}print(""" 英雄联盟商城登录界面~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~1. 用户登录2. 新用户注册3. 退出系统~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ …...

发布镜像到阿里云仓库

发布上一篇Dockerfile实战-自定义的centos镜像。 1、登录阿里云 2、找到容器镜像服务 3、创建命令空间 4、创建镜像仓库 5、点击进入这个镜像仓库&#xff0c;可以看到所有的信息 6、根据操作指南测试推送发布 6.1登录阿里云 [rootzhoujunru home]# docker login --usernam…...

web蓝桥杯真题:灯的颜色变化

代码及注释&#xff1a; // TODO&#xff1a;完善此函数 显示红色颜色的灯 function red() { //将红色图片元素display显示出来&#xff0c;其他隐藏document.querySelector(#defaultlight).style.display nonedocument.querySelector(#redlight).style.display inline-b…...

通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)

目录 一、相关环境及镜像二、zabbix-server服务端部署1.使用docker创建zabbix-server服务端(1). 创建专用于Zabbix组件容器的网络(2). 启动空的MySQL服务器实例(3). 启动Zabbix Java网关实例(4). 启动Zabbix服务器实例并将实例与创建的MySQL服务器实例链接(5). 启动Zabbix Web界…...

算法打卡day21|回溯法篇01|理论知识,Leetcode 77.组合

回溯法理论知识 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯是递归的副产品&#xff0c;只要有递归就会有回溯。所以回溯函数也就是递归函数&#xff0c;指的都是一个函数。 回溯法的效率 回溯法并不是什么高效的算法。因为回溯的本质是穷举&#xff0c;…...

C++ 输入输出

输入 1.1 cin >> str; 遇到“空格”、“TAB”、“回车”就停止 string str; cin >> str;1.2 getline(cin, str) 可用于输入一行数据&#xff0c;遇到空格不会停止&#xff0c;读入string字符中 便于读取一行一行的数据 while(getline(cin, str)){if(str "EN…...

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS图像缩放+多路视频拼接,提供4套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收OSD动态字符叠加输出应用本方案的SDI接收HLS…...

【gpt实践】50个提升工作效率的GPT指令

收集整理了50个工作不同场景中可能会用到的gpt指令&#xff0c;希望对大家有帮助。 1. 用「532规则」定制月度宣传规划 提示&#xff1a;“对于我的 [产品/服务] 在 [社交媒体平台上 ]定位 [我的目标受众]”&#xff0c;使用 5-3-2 规则制定 1 个月的社交媒体内容计划。” Pro…...

基于Springboot的高校竞赛管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的高校竞赛管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…...

论文阅读——EarthPT

EarthPT: a time series foundation model for Earth Observation 一个Earth Observation (EO)预训练的Transformer。EarthPT是一个7亿参数解码Transformer基础模型&#xff0c;以自回归自监督方式进行训练&#xff0c;并专门针对EO用例进行开发。我们证明了EarthPT是一个有效的…...

软件测评中心:进行科技成果鉴定测试的注意事项和好处简析

软件产品科技成果鉴定是有效评价科技成果质量和水平的方法之一&#xff0c;也是鼓励科技成果通过市场竞争等方式得到有效的评价和认可&#xff0c;可以推动科技成果的进步和转化。 一、进行科技成果鉴定测试时的注意事项&#xff1a;   1、应由具备一定资质和能力的专业机构…...

Android 系统开发工具大全

写给应用开发的 Android Framework 教程——玩转AOSP篇之 Android 系统开发工具推荐 下面推荐的是我常用的工具&#xff0c;如果你有好用的开发工具欢迎在评论区留言讨论交流。 1. SSH 服务与 Tabby Terminal SSH 服务使得我们在其他平台上通过 SSH 客户端程序即可访问到我们…...

C版本的-Unet-rknn推理

1. 前言 之前就想着使用rknn的c版本的api做推理看看&#xff0c;找了一个简单的&#xff0c;那就unet吧&#xff0c;本来想着用rk的demo文件&#xff0c;但是里面是mobilenet&#xff0c;相关的函数没有&#xff0c;卡这也卡了好久&#xff0c;突然发现tengine相关的后处理&…...

Transformer的前世今生 day04(ELMO、Attention注意力机制)

ELMO 前情回顾 NNLM模型&#xff1a;主要任务是在预测下一个词&#xff0c;副产品是词向量Word2Vec模型&#xff1a;主要任务是生成词向量 CBOW&#xff1a;训练目标是根据上下文预测目标词Skip-gram&#xff1a;训练目标是根据目标词预测上下文词 ELMO模型的流程 针对Wor…...

稀碎从零算法笔记Day19-LeetCode:相交链表

题型&#xff1a;链表基本操作 链接&#xff1a;160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&…...

AI系统性学习03—ChatGPT开发教程

文章目录 1、OpenAI关键概念⭐️2、OpenAI SDK介绍3、OpenAI API KEY&API 认证3.1 REST API安全认证 4、OpenAI模型⭐️4.1 模型分类4.2 GPT44.3 GPT-3.54.4 Embeddings 5、OpenAI快速入门6、Function calling(函数调用)⭐️⭐️⭐️6.1 应用场景6.2 支持function calling的…...

每日一练 | 华为认证真题练习Day201

1、BGP Notification报文Error Code为2时表示open消息错误&#xff0c;其中包含如下哪些错误子码?&#xff08;多选&#xff09; A. 1-不支持的版本号 B. 2-错误的对等体AS号 C. 2-错误的对等体AS号 D. 4-错误的属性列表 2、A greate命令&#xff08;aggregate ipy4-addre…...

告别定向测试!用SystemVerilog随机约束给你的芯片验证“开盲盒”

芯片验证的"开盲盒"革命&#xff1a;SystemVerilog随机约束实战指南 在数字IC验证的世界里&#xff0c;工程师们长期被定向测试的繁琐所困扰——编写无数特定场景的测试用例&#xff0c;像拼图一样试图覆盖所有可能的芯片行为。但随着设计复杂度呈指数级增长&#x…...

2026年版|Java开发者转型大模型开发:从入门到实践(小白必收藏)

在2026年AI技术全面爆发的当下&#xff0c;大模型开发早已从“前沿热点”变成“行业刚需”&#xff0c;无论是互联网大厂还是中小企业&#xff0c;都在疯狂布局大模型相关业务。作为一名深耕Java后端多年的开发者&#xff0c;我每天都会收到同行和小白的提问&#xff1a;传统Ja…...

手把手教你用YOLO26训练轴承缺陷检测(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)

摘要 轴承作为机械设备中的核心零部件&#xff0c;其表面缺陷的自动检测对保障设备安全运行具有重要意义。本研究基于YOLO26目标检测算法&#xff0c;构建了一套针对轴承表面四种典型缺陷&#xff08;aocao、aoxian、cashang、huahen&#xff09;的智能识别检测系统。系统采用…...

MySQL迁移任务中的数据流向监控_使用流量分析工具排查

主从复制流量突增但延迟不涨&#xff0c;大概率是代理或应用直连从库读取、或从库被误写入&#xff1b;INSERT ... SELECT 和 LOAD DATA LOCAL INFILE 会绕过复制监控并放大负载。MySQL主从复制流量突增但延迟不涨&#xff0c;SHOW SLAVE STATUS 看不出问题&#xff1f;这种情况…...

深入理解reFlutter核心组件:引擎哈希与快照分析原理

深入理解reFlutter核心组件&#xff1a;引擎哈希与快照分析原理 【免费下载链接】reFlutter Flutter Reverse Engineering Framework 项目地址: https://gitcode.com/gh_mirrors/re/reFlutter reFlutter作为一款专业的Flutter逆向工程框架&#xff0c;其核心功能依赖于对…...

造相-Z-Image参数详解:Z-Image原生支持的长提示词截断策略与语义保持机制

造相-Z-Image参数详解&#xff1a;Z-Image原生支持的长提示词截断策略与语义保持机制 想让AI画出你脑海中的画面&#xff0c;最头疼的往往不是模型不够强&#xff0c;而是你精心构思的一大段描述&#xff0c;到了AI那里却“听”不全。你写了几百字&#xff0c;从人物神态到环境…...

EntityX:C++11实体组件系统的终极入门指南

EntityX&#xff1a;C11实体组件系统的终极入门指南 【免费下载链接】entityx EntityX - A fast, type-safe C Entity-Component system 项目地址: https://gitcode.com/gh_mirrors/en/entityx EntityX 是一个基于 C11 的快速、类型安全的实体组件系统&#xff08;ECS&a…...

QIRA Web界面完全指南:可视化调试与交互式分析的黄金法则

QIRA Web界面完全指南&#xff1a;可视化调试与交互式分析的黄金法则 【免费下载链接】qira QEMU Interactive Runtime Analyser 项目地址: https://gitcode.com/gh_mirrors/qi/qira QIRA&#xff08;QEMU Interactive Runtime Analyser&#xff09;是一款强大的交互式运…...

从JS到TS,从Webpack到Rust,从云端到边缘,从编码到AI:Agent时代前端全生态演进的2026新篇章

语言的终局&#xff1a;TypeScript的全面胜利与原生回归 在2026年的今天&#xff0c;回望过去五年&#xff0c;前端领域发生的最具决定性的变化莫过于TypeScript的彻底胜利。这不再是一场关于“是否使用”的辩论&#xff0c;而是一次生态系统的强制升级。根据最新的行业调查&am…...

postgresql15 postgresql.cof-data_directory

在postgresql里&#xff0c;data_directory指的是数据库实例的数据目录&#xff0c;也就是postgresql存放数据文件、WAL、配置文件(部分)的地方。data_directory参数值的修改&#xff0c;需要重启postgresql才能生效。如何查看当前data_directory&#xff1a;-bash-4.2$ psql p…...