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

PHP代码审计之MVC与ThinkPHP简介

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP代码审计之MVC与ThinkPHP简介。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、MVC简介

MVC是软件工程中的一种架构模式,MVC是Model(模型)、View(视图)和Controller(控制器)的缩写。MVC的目的是实现动态的程序设计,并有利于程序的修改、扩展和升级,能够最大限度的实现代码复用,并使得程序结构更加直观。
MVC架构中各模块作用如下所示:
1、Model
管理大部分的业务逻辑和数据库逻辑,负责处理用户数据。
2、View
负责渲染数据,根据Controller发送的数据,生成HTML代码,然后呈现给用户。
3、Controller
负责响应用户请求,准备数据以及决定如何展示数据。
Web MVC架构响应流程如下图所示:
在这里插入图片描述

从上图中可以看出,Web MVC架构响应流程主要分为以下4个步骤:
1、Controller截获用户发送的请求。
2、Controller调用Model,完成对用户请求的处理,其中通常包含对数据库的操作、对文件的操作等。
3、Controller把Model模块处理好的数据发送给View。
4、View将最终的数据呈现给用户。

二、ThinkPHP简介

ThinkPHP是一个免费、开源、简单的轻量级PHP开发框架,借助ThinkPHP,我们可以快速开发PHP类型的Web网站。
ThinkPHP官网地址为:https://www.thinkphp.cn/,其主页如下所示:
在这里插入图片描述
ThinkPHP免费在线开发文档地址为:https://www.kancloud.cn/manual/thinkphp5_1/353946,其页面如下所示:
在这里插入图片描述
要下载并使用ThinkPHP,其官网目前开放了Git和Composer两种方式。
我们可以使用Git的方式安装ThinkPHP,执行命令:

git clone https://github.com/top-think/think tp5
cd ./tp5
git clone https://github.com/top-think/framework thinkphp

即可安装完成,上述代码执行结果如下图所示:
在这里插入图片描述
但是,这样直接下载下来的ThinkPHP没有相关的Composer插件,在ThinkPHP使用时可能会出现问题。
composer是PHP5.3版本以上推出的依赖管理工具。如果采用Composer下载,首先需要更新Composer版本,执行命令:

composer self-update

之后,我们最好是将composer的镜像切换到阿里云的源,执行命令:

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/  

最后,我们就可以下载

composer create-project topthink/think=5.1.* tp5

上述命令执行结果(第二条命令在之前已经运行)如下所示:
在这里插入图片描述
之后,我们将该目录放到网页主目录下,然后尝试访问public/子目录,结果如下所示:
在这里插入图片描述
出现如上图所示页面,就说明我们的ThinkPHP安装完毕。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

相关文章:

  • 【教程】Python实时检测CPU和GPU的功耗
  • Windows压缩工具 “ Bandizip 与 7-zip ”
  • Windows卸载与清除工具 “ Geek 与 CCleaner ”
  • Git速成指南
  • 逆序遍历List集合
  • VSCode配置C/C++环境
  • 芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点
  • Opencv调参神器——trackBar控件
  • 自动驾驶环境感知——视觉传感器技术
  • 详解Vue PC端如何实现扫码登录功能
  • Spring事务、事务隔离级别、事务传播机制
  • 前端图片压缩方案及代码实现
  • layui框架学习(1:布局)
  • ArrayList扩容机制~
  • 数据挖掘,计算机网络、操作系统刷题笔记36
  • CODING 缺陷管理功能正式开始公测
  • HTTP中的ETag在移动客户端的应用
  • JavaScript的使用你知道几种?(上)
  • JAVA并发编程--1.基础概念
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Python学习笔记 字符串拼接
  • Python学习之路13-记分
  • Redux系列x:源码分析
  • SQLServer之索引简介
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • sublime配置文件
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 我这样减少了26.5M Java内存!
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序开发中的那些坑
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #include
  • #mysql 8.0 踩坑日记
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (4)Elastix图像配准:3D图像
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (五)IO流之ByteArrayInput/OutputStream
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • .gitignore文件设置了忽略但不生效
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ NOI 2001 ] 食物链
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [.net]官方水晶报表的使用以演示下载
  • [Angular 基础] - 表单:响应式表单
  • [C++]priority_queue的介绍及模拟实现
  • [iOS]Win8下iTunes无法连接iPhone版本的解决方法
  • [LeetCode] Ransom Note 赎金条
  • [Prism]Composite Application Guidance for WPF(9)——命令
  • [svc]ssh+gg二步认证
  • [TFF联邦学习]送给想要了解TFF的盆友