作为一名准备成为CTF里WEB狗的萌新,在做了3个月的CTF的web题后,发现自己php代码审计非常不过关,并且web的架构模式条理也十分的不清晰,于是抱着提高代码审计能力的态度在近期会去写一个简单的cms(其实现在怎么写思路还是不清晰)

环境搭建:vmware虚拟环境,win7系统,web采用快捷方便的phpstudy(包含php很多版本,apache,mysql)

thinkphp,在中文官网中将压缩文件下载下来,解压到phpstudy/PHPTutorial/WWW/tp新建目录下

开启phpstudy的apache服务器。

在本机中(整个网站架构我是放在虚拟机中的)url输入:虚拟机ip/tp/public/index.php

写这篇文章的时候,这里主页面的index我已经改过了,原版的界面应该是一个 :)这样的一个欢迎界面

所以所访问thinkphp5这个架构的入口即在public/index.php这个文件中,看看文件里面的内容

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +---------------------------------------------------------------------- // [ 应用入口文件 ] // 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

这里的代码明显不是本体内容,它下一步调用了tp/thinkphp/start.php

我们接下来查看该文件内容

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +---------------------------------------------------------------------- namespace think; // ThinkPHP 引导文件
// 1. 加载基础文件
require __DIR__ . '/base.php'; // 2. 执行应用
App::run()->send();

这个文件里面还不是目的代码,他是走的同级目录下的base.php这个文件(5.1版本中没有start.php这个中转文件,直接是index.php跳转于base.php)

base.php这个文件内容我目前没看懂,它作用是会重定向到tp/application/index/controller/Index.php中,而这个文件就是在网页上访问显示的文件,最先给的demo里面就是个php代码里面输出个html页面。(这里我进行了修改,但内容无非是一个内,可以进行继承,并且能调用命名空间)

<?php
namespace app\index\controller; use think\Controller;
use think\Db; class Index extends Controller
{
public function index()
{
$data = Db::name('data')->find();
$this->assign('result', $data);
return $this->fetch();
}
}

而thinkphp这个架构是使用是mvc架构,意思是模型,视图,控制器是三个独立分开的,我在index.php文件中继承了Controller类这个类中的assign函数和fetch函数能够使值传到V(视图)模块中,上面的index.php是C(控制器)模块,而我们真真输出的是在V(视图)文件中,这个文件夹是我手动创建的。

就一个简单的html文件。

这里插播一下,我们回来看public这个目录下

那个static文件夹是做什么的?这里在官方手册中解释是放js,css这些前端的格式样式的,而且这些可以放在其他地方,但是最好放在这里(官方说)

最后就是调用数据库里面的信息了,其实上面的tp/application/index/controller/Index.php中的代码意思就是调用了数据库中的文件。

这里我用phpmyadmin管理系统在浏览器中添加了demo这个数据库,并创建了think_php这个表,里面添加了3个元素。

说下我最先,觉得这个数据库文件必须放在tp这个目录下什么位置(因为最先在phpstduy中phpmyadmin和mysql的目录并不是在tp这个文件目录下的),但是我发现,只要是在web服务器上的数据库里面,thinkphp就能访问到,但是访问前要设置下database.php这个文件

然后设置账号和密码,这里phpstudy安装后mysql的默认账号和密码是root,然后设置数据库名称,和表名前缀(表名前缀可以不设置,就是在index.php中调用时要补全名)

至此再访问public/index.php就返回的数据库里面的信息了(前提是application/index/controller/index.php中写了调用的,并且view中的html文件也进行了相应参数的输出)

初识thinkphp(1)的更多相关文章

  1. 初识thinkphp(3)

    这篇内容主要涉及请求相应内容. 该系列主要是个人笔记,且内容是连贯的,其中涉及到的自己写的模块或者方法在前面文章中有介绍咋来的,如果您看得云里雾里,给您带来不便,真的不好意思. 0x01:请求对象 官 ...

  2. 初识thinkphp(5)

    这次主要内容是模型的基本操作 0x01:什么是模型 通过手册的阅览,笼统的说就是,把打开数据库等操作在另一个php文件中进行 以及对变量的规则具体细节,查询,取值等操作进行定义,方便在控制器中直接使用 ...

  3. 初识thinkphp(4)

    这次内容是数据库的使用方法 因为在第一章讲过就是拿index这个文件写的数据库的访问,这次实验我使用文件是系统默认的首页 配置的内容也在那里有提过就不重发戳图了. 数据库按照手册上的建议建了3行的内容 ...

  4. 初识thinkphp(2)

    thinkphp的url路径的表示格式为 http://ip/tp/public/index.php/模块/控制器/操作 这里url最后的操作就是类里面的函数. 0x01:url访问格式 官方文档中有 ...

  5. ThinkPHP学习笔记(一)----初识ThinkPHP

    在做微信开发的时候原本使用来yii框架,后续觉得yii虽然功能强大使用方便,但是整个框架太大了,不适合一些轻量级的开发:这个时候发现thinkphp这个框架,框架本身很小,只有几M,但麻雀虽小,但五脏 ...

  6. 使用ThinkPHP框架高速开发站点(多图)

    使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...

  7. 使用ThinkPHP框架高速发展网站(多图)

    使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助 ...

  8. ThinkPHP Widget模块开发流程

    初识ThinkPHP的Widget,现把模块开发的流程发布如下,也方便以后自己查阅: 一.新建数据库表self_modules,sql代码如下 CREATE TABLE `self_modules` ...

  9. [转]使用ThinkPHP框架快速开发网站(多图)

    本文转自:http://blog.csdn.net/ruby97/article/details/7574851 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkP ...

随机推荐

  1. NodeJS API Process全局对象

    Process 全局对象,可以在代码中的任何位置访问此对象,使用process对象可以截获进程的异常.退出等事件,也可以获取进程的当前目录.环境变量.内存占用等信息,还可以执行进程退出.工作目录切换等 ...

  2. 鸟哥的Linux私房菜——第十四章:Bash Shell

    视频链接:http://www.bilibili.com/video/av10094012/ 本章目录: 1. Bash shell1.1 什么是 shell ? (我们通过shell与Kernel核 ...

  3. Java Message Service学习(一)

    一,背景 近期需要用到ActiveMQ接收Oozie执行作业之后的返回结果.Oozie作为消息的生产者,将消息发送给ActiveMQ,然后Client可以异步去ActiveMQ取消息. ActiveM ...

  4. 20155303 2016-2017-2 《Java程序设计》第五周学习总结

    20155303 2016-2017-2 <Java程序设计>第五周学习总结 教材学习中的问题和解决过程 『问题一』:受检异常与非受检异常 『问题一解决』: 受检异常:这种在编译时被强制检 ...

  5. 【问题收集·中级】关于XMPP使用Base传送图片

    [问题收集·中级]关于XMPP使用Base传送图片 下面是我与博友的问答过程:并在最后链接附录了相应的文件: 博友问题:  16:35:38 他跟我说要 内容图片  base64编码 上传..博友问题 ...

  6. Informatica学习:3、用户创建与权限管理

    环境:win7 下安装Informatica 9.6.1 服务器端与客户端作为学习之用,Linux大同小异 一.用户创建(服务器端) 1.登陆admin console (1)打开Admin Cons ...

  7. LEARN HOW TO HACK

    出处:https://www.hackerone.com/hacker101 什么是HACKER101? https://hacker101.com/Hacker101是一个视频,资源和实践活动的集合 ...

  8. [转]MongoDB更新操作replaceOne()实例讲解

    最近正在学习MongoDB,作为数据库的学习当然是要从CRUD开始学起了.这篇文章默认读者是知道如何安装MongoDB.如何运行MongoDB实例以及了解了MongoDB中的collection.do ...

  9. poj1273

    赤裸裸的最大流 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstr ...

  10. SpringBoot修改默认端口号,session超时时间

    有时候我们可能需要启动不止一个SpringBoot,而SpringBoot默认的端口号是8080,所以这时候我们就需要修改SpringBoot的默认端口了.修改SpringBoot的默认端口有两种方式 ...