0x01环境部署:

下载:

获取ThinkPHP的方式很多,官方网站(http://thinkphp.cn)是最好的下载和文档获取来源。

官网提供了稳定版本的下载:http://thinkphp.cn/down/framework.html

官网下载版本提供了完整版和核心版两个版本,核心版本只保留了核心类库和必须的文件,去掉了所有的扩展类库和驱动,支持标准模式和SAE模式。

如果你希望保持最新的更新,可以通过github获取当前最新的版本(完整版)。

Git获取地址列表(你可以选择一个最快的地址):

Github: https://github.com/liu21st/thinkphp
Oschina: http://git.oschina.net/liu21st/thinkphp.git
Code: https://code.csdn.net/topthink2011/ThinkPHP

3.2版本也支持composer安装,确保你的电脑已经安装了composer,然后在你的web根目录下面执行 composer create-project topthink/thinkphp your-project-name

注意:目前国内的速度很慢 建议直接下载官网版本

ThinkPHP无需任何安装,直接拷贝到你的电脑或者服务器的WEB运行目录下面即可。

安装:

首次Application目录是空的,访问一次以后会生成文件。

数据库:

在配置文件中配置相应的配置:

Application\Conf\config文件

/* 数据库设置 */
    'DB_TYPE'               =>  'mysql',     // 数据库类型
    'DB_HOST'               =>  '', // 服务器地址
    'DB_NAME'               =>  '',          // 数据库名
    'DB_USER'               =>  '',      // 用户名
    'DB_PWD'                =>  '',          // 密码
    'DB_PORT'               =>  '',        // 端口
    'DB_PREFIX'             =>  '',    // 数据库表前缀
    'DB_PARAMS'              =>  array(), // 数据库连接参数
    'DB_DEBUG'              =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志
    'DB_FIELDS_CACHE'       =>  true,        // 启用字段缓存
    'DB_CHARSET'            =>  'utf8',      // 数据库编码默认采用utf8
    'DB_DEPLOY_TYPE'        =>  0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'DB_RW_SEPARATE'        =>  false,       // 数据库读写是否分离 主从式有效
    'DB_MASTER_NUM'         =>  1, // 读写分离后 主服务器数量
    'DB_SLAVE_NO'           =>  '', // 指定从服务器序号

测试

现在在Application\Home\Controller\目录下的IndexController.class.php文件加入一个查询、打印数据的方法 看看是否正常运行。

public function test(){

        $data = M('user')->where('id=1')->select();
        dump($data);

    }

访问

http://127.0.0.1/thinkphp3/index.php/home/index/test

0x02 常用函数和访问模式

Url 访问

1.PATHINFO 模式 http://域名/项目名/入口文件/模块名/方法名/键 1/值 1/键 2/值 2

2.普通模式 http://域名/项目名/入口文件?m=模块名&c=控制器名&a=方法名&键 1=值 1&键 2=值 2

控制器操作

1)A方法

跨域控制器实例化后,再调用被实例化对象的方法。

$User = A('User');

$User->index();

例如我Index控制器想调用User控制器的index方法,我们在Index控制器中定义方法调用A方法。

public function getUserIndex(){
         $User = A('User');
         $User->index();
    }

此时我们访问Index控制的getUserIndex函数

http://127.0.0.1/thinkphp3/index.php/home/index/getUserIndex

2)R方法

R方法更简单

3)I 方法

Action参数绑定

Action参数绑定是通过直接绑定URL地址中的变量作为操作方法的参数,Action参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块、控制器和操作名)和操作方法中的参数进行绑定。

'URL_PARAMS_BIND'       =>  true, // URL变量绑定到操作方法作为参数

比如我在Index控制器定义如下方法

如果我需要传入一个id为100,访问的地址就应该是

http://127.0.0.1/thinkphp3/index.php/home/index/getUserIndex/id/100

但是官方推荐 I 方法

I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:

I('变量类型.变量名/修饰符',['默认值'],['过滤方法'],['额外数据源'])

变量类型是指请求方式或者输入类型,包括:

I 方法使用

$id = I('user','1','intval');
          dump($id);

传入的参数使用intval函数转成整数型,不传参数默认为1

0x03 插件控制器

3.2.2版本开始支持插件控制器的调用,可以通过更加方便的URL地址访问到模块中的插件定义的控制器。

当URL中传入插件控制器变量的时候,会自动定位到插件控制器中的操作方法。

插件控制器的变量由参数 VAR_ADDON 进行设置,默认为addon,例如我们在URL中传入: http://serverName/Home/info/index/addon/SystemInfo

由于传入了addon参数,因此这里的Info控制器并非原来的 Home/Controller/InfoController.class.php

而是调用SystemInfo插件(位于Home/Addon目录下面)的InfoController控制器了,文件位于 Home/Addon/SystemInfo/Controller/InfoController.class.php

代码审计准备之Thinkphp3的更多相关文章

  1. thinkphp3.2.3代码审计

    <?php namespace Home\Controller; use Think\Controller; class UserController extends Controller { ...

  2. 代码审计-Thinkphp3框架EXP表达式SQL注入

    最近看java框架源码也是看的有点头疼,好多还要复习熟悉 还有好多事没做...慢慢熬. 网上好像还没有特别详细的分析 我来误人子弟吧. 0x01 tp3 中的exp表达式 查询表达式的使用格式: $m ...

  3. 代码审计-thinkphp3.2.3框架漏洞sql注入

    开始复现审计一下tp3和tp5的框架漏洞,当个练习吧. 涉及注入的方法为where() table() delete()等. 环境 tp3.2.3 : 0x01 注入成因 测试代码: public f ...

  4. PHP代码审计05之正则使用不当

    前言 根据红日安全写的文章,学习PHP代码审计的第五节内容,题目均来自PHP SECURITY CALENDAR 2017,讲完题目会用一道CTF的题目和实例来加深巩固.这是之前写的,有兴趣可以去看看 ...

  5. Thinkphp3分析与审计

    0x00 前言: 这篇是去年组内分享的时候给小伙伴写的0基础快速审计tp3系列的文章,主要是对架构做个分析以及审计一些sql注入漏洞~ 现在想想打算放出来,过了一年了,可能里面有一些问题,望看到的大佬 ...

  6. thinkphp3.2.3中U()方法和redirect()方法区别

    今天博主看3.1的教程,学着3.2,就遇到了这个坑,怎么就是不跳转呢,很纳闷!! 在thinkphp3.1 中 U()方法是可以执行跳转的(看视频教程里面是可以的,博主没有测试过). 但是在think ...

  7. thinkphp3.2.3版本文件目录及作用

    下载thinkphp3.2.3版本,解压缩后将文件夹名字改为thinkphp,然后放在www目录下,里面的文件夹和文件的名字和作用如下:(前面有Tab健的表示下一级,thinkphp是根目录) //t ...

  8. 基于ThinkPHP3的微信平台开发_1

    微信公众平台是个好东西,具体的就不说了,我直接说技术>_< 下图为目录结构一览: 微信开发 - 文件目录结构 平台功能: 此次开发的平台是面向多微信公众号.微信多公众号主(下面简称号主)的 ...

  9. Thinkphp3.2.3使用Ajax一定注意 数据返回

    Thinkphp3.2.3使用Ajax一定注意 数据返回 $data = 'ok'; $this->ajaxReturn($data); 不能直接 echo $data;

随机推荐

  1. 如何在spingboot项目中自定义自己的配置

    在实际开发中,为了方便我们常常会考虑把配置文件的某一类配置映射到配置类上,方便spring容器加载,实现方法如下: 1. 书写配置文件信息:书写某一类特定字段开头的配置信息,例如在yml配置文件中可以 ...

  2. MapReduce原理及操作

    注意:本实验是对前述实验的延续,如果直接点开始实验进入则需要按先前学习的方法启动hadoop 部署节点操作系统为CentOS,防火墙和SElinux禁用,创建了一个shiyanlou用户并在系统根目录 ...

  3. 三句话告诉你break、return、continue!

    break:终止循环执行循环体下面的代码 return:终止循环并且退出循环所在的方法 continue:终止当前循环,进行下一次循环

  4. Vue路由(vue-router)详细讲解指南

    中文文档:https://router.vuejs.org/zh/ Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.路由实际 ...

  5. 跟我学SpringCloud | 第十八篇:微服务 Docker 化之基础环境

    1. 容器化 Docker 的横空出世,给了容器技术带来了质的飞跃,Docker 标准化了服务的基础设施,统一了应用的打包分发,部署以及操作系统相关类库等,解决了测试生产部署时环境差异的问题.对于运维 ...

  6. 使用apache的poi来实现数据导出到excel的功能——方式一

    利用poi导出复杂样式的excel表格的实现. 我们要实现的效果是: 我们利用提前设计好模板样式,再在模板中填充数据的方式. 首先,pom.xml引入poi. <dependency> & ...

  7. java程序猿如何练习java版的易筋经?

    故事背景 电视剧<天龙八部>中,阿朱易容后进入少林寺偷走了<易筋经>,她一直想把这本书送给乔峰.耿直的乔峰觉得此书来历不正,不肯接受.几番波折,这本书最后落到聚贤庄庄主游坦之手 ...

  8. SpringBootSecurity学习(15)前后端分离版之 OAuth2.0简单示例

    OAuth2.0 OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.客户端来申请资源,资源所有者同意以后,资源服务器可以向客户端颁发令牌.客户端通过令牌,去请求数据.也就是说, ...

  9. element取表格对应id数据

    <el-button size="mini" type="danger" @click="editor(scope.row)"> ...

  10. linux分析工具之vmstat详解

    一.概述 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.首先我们查看下帮助.如下图所 ...