thinkphp5基础认识

在thinkphp5中,无论我们怎么对项目进行更改,最终我们访问的文件只有一个,我们把这种只需要通过访问一个(单个)文件就能实现各种功能需求的设计,叫做『单入口模式』。

在thinkphp中,是通过“入口文件/模块名(module)/控制器名(controller)/触发器名(action)”来确定用户的URL对应执行哪个方法中的语句的。

application下面的子文件夹,称为模块(Module),把模块下的controller文件夹中的子文件称之为控制器(Controller),把控制器文件中的方法称为触发器(Action)

在thinkphp每一个URL都会对应着一个触发器。

为了理清Thinkphp的文件路径与访问的url路径对应关系。我下面列据出一个比较乱的例子,能够很好的说明问题。首先先声明:我们的入口文件是本地www/thinkphp5.0/public/index.php对应url地址是http://localhost/thinkphp5.0/public/index.php

thinkphp的默认值

  1. 当我们未指定模块名时,调用的是默认模块index。
  2. 当我们未指定控制器名时,调用的是默认控制器Index(注意,这个是Index,而不是index,原因是控制器实际上是一个类,我们规定类的名字首写字母要大写)。
  3. 当我们在URL中未指定触发器名时,调用的是默认触发器index。

首先理解这个简单的例子:
我们访问入口文件/thinkphp5.0/public/index.php,对应url地址是http://localhost/thinkphp5.0/public/index.php。未指明对应的模块,默认访问调用了模块index,未指定控制器名,调用的是默认控制器Index,未指定触发器名,调用的是默认触发器index。实际对应的url应该为http://localhost/thinkphp5.0/public/index.php/index/Index/index。实际执行的是/thinkphp5.0/application/index/controller/Index.php中的index()方法。
深入理解:仔细看图片中的文件结构来给出对应的url。
MZkult.png
我们想要的访问执行/thinkphp5.0/application/alex/controller/Alex.php中的index()方法。
首先是访问入口文件:http://localhost/thinkphp5.0/public/index.php然后加模块名再加控制器名再加触发器名。所以应该url是http://localhost/thinkphp5.0/public/index.php/alex/ALex/index。(这里末尾的index可以省略。因为默认访问。public后的index.php也可省略,因为apache默认访问。)即可显示alex

我们想要的访问执行/thinkphp5.0/application/alex/controller/Alex.php中的aaaa()方法。对应的url应该为:
http://localhost/thinkphp5.0/public/index.php/alex/ALex/aaaa。即可显示abex
这就是url与thinkphp文件对应的关系。

MCA

M = Module 它对应一个文件夹

C = Controller 它对应一个文件

A = Action 它对应一个方法(它还有几个名字:触发器、函数、function、method)
每个URL都会对应唯一的一组MCA,这组唯一的MCA会执行特定的function。当用户访问一个URL时,就会执行一个对应的function,我们把一些代码写在这个function中,那么相应的功能就实现了。

thinkphp5数据库操作

怕坑记:在给控制器起名的时候,只允许首字母大写,不允许其他字母大写。。。

  • flask框架

    python flask框架hello worldfrom flask import Flask app = Flask(__name__) @app.route('/') def index(name): return...

    flask框架
  • linux三剑客

    前言之前用一些脚本都经常用到grep,sed,awk。但是一直不太熟悉,今天来学习一下,做个备忘录。 grep格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTER...

    linux三剑客
  • i春秋2020新春战“疫”网络安全公益赛 web Writeup

    前言这次比赛题目质量挺好的,除啦环境可能有时候有点问题。(就让我遇到了。心态炸了一天。。。)其他都挺好的。 DAY1简单的招聘系统知识点:sql注入的联合注入或盲注存在注册和登陆功能,首先进行注册后登陆进系统,发现有一个模块是管理员才...

    i春秋2020新春战“疫”网络安全公益赛 web Writeup
  • 计算机组成原理学习

    计算机组成原理第一章 计算机系统概论计算机系统的层次结构 冯·诺依曼计算机的特点 计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成 指令(程序)和数据以二进制同等地位地存储在存储器中,可按址寻访 指令由操作码和地址码组...

    计算机组成原理学习
  • 2019安洵杯+2019广外比赛web部分题解

    2019安洵杯easy_web知识点:MD5强碰撞,命令执行这个题比较简单,看题目发现传入参数img和cmd,然而图片是传入的img参数控制,让我想到ddctf的一道题,然后发现img是通过把文件名进行转十六进制后两次base64编码...

    2019安洵杯+2019广外比赛web部分题解
  • bypass disfunction

    前言PHP 的 disabled_functions主要是用于禁用一些危险的函数防止攻击者执行系统命令。但是有一些绕过方法。这里做个总结。 基本思路有四种绕过 disable_functions 的手法:第一种,攻击后端组件,寻找存在...

    bypass disfunction
  • 2019极客大挑战RCE ME

    题目环境:http://114.116.44.23:40001/ 题目还是老样子。无字母数字rce。知识点其实都有写过,就不说了。详细参见:【RCE提高篇】题目源码: <?php ini_set("display_errors"...

    2019极客大挑战RCE ME
  • RCE提高篇

    前言首先,需要了解一下命令执行的函数,这里推荐几篇文章,来认识这些函数。浅谈eval和assert从底层分析eval和assert的区别命令执行与代码执行的小结巧用命令注入的N种方式命令注入绕过姿势我就不在说这几个东西,大牛们都说的很...

    RCE提高篇
  • buuctf刷题记录(序)

    love math知识点:代码审计,绕waf直接给出源码: <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET['c'])){ sho...

    buuctf刷题记录(序)
  • phar拓展反序列化攻击面

    pharphar扩展提供了一种将整个php应用程序放入名为“phar”(php archive)的单个文件中的方法,以便于分发和安装。除了提供这个服务之外,phar扩展还提供了一个文件格式抽象方法,用于通过phardata类创建和操作...

    phar拓展反序列化攻击面