我的编程空间,编程开发者的网络收藏夹
学习永远不晚

thinkphp5.0.x命令是怎么执行filter的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

thinkphp5.0.x命令是怎么执行filter的

今天小编给大家分享一下thinkphp5.0.x命令是怎么执行filter的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Thinkphp5.0.x命令执行

同样是利用call_user_func()进行命令执行,在Request类的函数filterValue中执行

首先搜索哪些函数调用了filterValue:

thinkphp5.0.x命令是怎么执行filter的

在Request类中的cookie()和input()函数中调用了filterValue()

搜索cookie函数调用情况,未发现结果;搜索input调用情况:

thinkphp5.0.x命令是怎么执行filter的

从run函数跟进:

Step1

在$request = is_null($request) ? Request::instance() : $request;

会执行request的构造函数,此时已经通过构造函数中file_get_contents(‘php://input’)获取到了POST的内容并赋值给$request->input变量

thinkphp5.0.x命令是怎么执行filter的

Step2

$dispatch = self::routeCheck($request, $config);

thinkphp5.0.x命令是怎么执行filter的

在routeCheck中会进入Route类的check函数:

thinkphp5.0.x命令是怎么执行filter的

check函数调用了$request->method():

传入参数默认值为false,会执行到elseif中获取var_method => _method,下面会对获取到的变量进行覆盖,此时如果传入__construct,$_POST获取到post提交的数据,即可在construct函数中遍历POST的数组对request类中的成员进行覆盖

thinkphp5.0.x命令是怎么执行filter的

thinkphp5.0.x命令是怎么执行filter的

thinkphp5.0.x命令是怎么执行filter的

以下利用过程需要:debug模式开启

在run()中会调用param():

thinkphp5.0.x命令是怎么执行filter的

跟进param函数:

首先进入if条件,跟进method方法

thinkphp5.0.x命令是怎么执行filter的

thinkphp5.0.x命令是怎么执行filter的

method()传入参数为true:

执行下面语句:获取原始请求类型$_SERVER['REQUEST_METHOD'],返回值为POST

thinkphp5.0.x命令是怎么执行filter的

返回到param中,$method=POST 

thinkphp5.0.x命令是怎么执行filter的

因此会执行switch中的POST部分,进入post函数:

thinkphp5.0.x命令是怎么执行filter的

post函数:

thinkphp5.0.x命令是怎么执行filter的

传入参数:

thinkphp5.0.x命令是怎么执行filter的

,然后复制给$content,然后对$_POST和是否json格式判断,如果是json传入还需要进行json_decode,否则直接使用$_POST的值

thinkphp5.0.x命令是怎么执行filter的

进入input方法:传入参数为POST所获取到的

thinkphp5.0.x命令是怎么执行filter的

thinkphp5.0.x命令是怎么执行filter的

Name为false,input返回data,post()直接返回

param()函数中:$vars = $this->post(false);

进入getFilter:

thinkphp5.0.x命令是怎么执行filter的

getFilter中$filter = $filter ?: $this->filter;获取到$request类的filter变量值(之前在construct遍历覆盖的),并作为返回值给input函数

thinkphp5.0.x命令是怎么执行filter的

继续执行array_walk_recursive($data, [$this, 'filterValue'], $filter);

array_walk_recursive() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数

相当于$filters=system取$data中的每一个变量作为$value传入,当取到ccc=ipconfig时,system作为call_user_func第一个参数,ipconfig作为第二个,造成了命令执行。

thinkphp5.0.x命令是怎么执行filter的

执行结果:

thinkphp5.0.x命令是怎么执行filter的

以上就是“thinkphp5.0.x命令是怎么执行filter的”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

thinkphp5.0.x命令是怎么执行filter的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

thinkphp5.0.x命令是怎么执行filter的

今天小编给大家分享一下thinkphp5.0.x命令是怎么执行filter的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。T
2023-06-29

Java.Utils怎么执行命令行命令

小编给大家分享一下Java.Utils怎么执行命令行命令,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!常用的java框架有哪些1.SpringMVC,Spring
2023-06-14

navicat怎么执行命令

在 navicat 中执行命令可以通过“sql 编辑器”选项卡,输入 sql 查询或管理数据库命令,再单击“执行”按钮。常用的命令包括创建表、插入数据、查询数据、更新数据和删除数据。如何在 Navicat 中执行命令在 Navicat 中
navicat怎么执行命令
2024-04-23

怎么在dos命令行中执行for命令

这期内容当中小编将会给大家带来有关怎么在dos命令行中执行for命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。for帮助文档对一组文件中的每一个文件执行某个特定命令。 FOR %variable IN
2023-06-08

怎么在dos命令行中执行cd命令

今天就跟大家聊聊有关怎么在dos命令行中执行cd命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。显示当前目录名或改变当前目录。 CHDIR [/D] [drive:][path]
2023-06-08

C#怎么执行ping命令

本篇内容主要讲解“C#怎么执行ping命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么执行ping命令”吧!C#执行ping命令首先,我们用使用Process类,来创建独立的进程,导入
2023-06-17

java怎么执行linux命令

在Java中执行Linux命令有以下几种方法:1. 使用Runtime类的exec()方法:这是最简单的方法,它可以直接执行一个命令,并返回一个Process对象,可以通过该对象获取命令执行的结果。```javaString command
2023-09-17

python怎么执行shell命令

在Python中可以使用`os`模块中的`system`函数来执行Shell命令。以下是一个示例:```pythonimport os# 执行ls命令os.system('ls')# 执行pwd命令,并获取输出结果result = os.p
2023-09-27

python怎么执行cmd命令

在 Python 中执行 cmd 命令,可以使用 `os` 模块中的 `system()` 或 `popen()` 方法。下面是使用 `os.system()` 方法执行 cmd 命令的示例:```pythonimport os# 执行简单
2023-09-22

vb怎么执行sql命令

在VB中执行SQL命令可以使用ADO.NET来实现。以下是一个简单的示例:首先,需要引入相关的命名空间:Imports System.Data.SqlClient然后,创建一个SqlConnection对象来连接到数据库:Dim co
vb怎么执行sql命令
2024-04-09

怎么并发执行Linux命令

这篇文章主要讲解了“怎么并发执行Linux命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么并发执行Linux命令”吧!串行是按照顺序一条接着一条的执行命令,与串行相对的是多条命令同时执
2023-06-15

mysql命令行执行脚本的方法是什么

在MySQL命令行中执行脚本的方法有以下几种:使用source命令:在命令行中使用source命令加载并执行脚本文件。语法如下:source /path/to/script.sql;其中,/path/to/script.sql为脚本文件的路
mysql命令行执行脚本的方法是什么
2024-04-09

shell怎么判断命令是否执行成功

在shell中,可以使用特殊变量$?来获得上一个命令的退出状态码。一般情况下,退出状态码为0表示命令执行成功,非0表示命令执行失败。例如,可以使用以下方式来判断命令是否执行成功:```shellcommandif [ $? -eq 0 ];
2023-08-12

怎么用命令执行Shell脚本

本篇内容主要讲解“怎么用命令执行Shell脚本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用命令执行Shell脚本”吧!假设这个 shell 脚本的名称为 tinyshell.sh。在 L
2023-06-09

java怎么远程执行linux命令

可以使用Java中的ProcessBuilder类来远程执行Linux命令。下面是一个简单的示例代码:```javaimport java.io.BufferedReader;import java.io.IOException;impor
2023-09-29

node怎么执行cmd或shell命令

这篇文章主要介绍“node怎么执行cmd或shell命令”,在日常操作中,相信很多人在node怎么执行cmd或shell命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node怎么执行cmd或shell命令
2023-07-02

JSch怎么远程执行Shell命令

这篇文章主要介绍了JSch怎么远程执行Shell命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JS是什么JS是JavaScript的简称,它是一种直译式的脚本语言,其解释
2023-06-14

Saltstack远程执行命令怎么用

这篇文章给大家分享的是有关Saltstack远程执行命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。命令命令格式:salt <操作目标> <方法>[参数]例:salt wx cmd.run free -m
2023-06-05

php7下命令行无法执行怎么办

php7下命令行无法执行的解决方法:1、打开php.ini配置文件;2、关闭安全模式;3、禁用函数列表【disable_functions = proc_open,shell_exec】。
2017-12-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录