作为一名准备成为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. python XML梳理

    导入ElementTree模块 import xml.etree.ElementTree as ET 为了创建一个element实例,使用Element 构造函数或者SubElement()工厂函数. ...

  2. bzoj千题计划264:bzoj3884: 上帝与集合的正确用法

    http://www.lydsy.com/JudgeOnline/problem.php?id=3884 欧拉降幂公式 #include<cmath> #include<cstdio ...

  3. Codeforces 931 C. Laboratory Work

    http://codeforces.com/problemset/problem/931/C 题意: 给定一个数列,要求构造一个等长的数列,使得数列的平均值等于给定数列,并且使得构造出的数列中与原数列 ...

  4. ML—R常用多元统计分析包(持续更新中……)

    基本的R包已经实现了传统多元统计的很多功能,然而CRNA的许多其它包提供了更深入的多元统计方法,下面要综述的包主要分为以下几个部分: 1) 多元数据可视化(Visualising multivaria ...

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

    教材学习内容总结 Java语言中所有的错误都会包装为对象.使用try.catch可以对对象做处理. 设计错误对象都继承自java.lang.Throwable类.Throwable定义了取得错误信息, ...

  6. <td>内容超出自动换行

    td 内容自动换行 table表格td设置宽度后文字太多自动换行 设置table 的 style="table-layout:fixed;" 然后设置td的 style=" ...

  7. google浏览器测试时清理缓存、强制不用缓存刷新快捷键(常用、效率)

    Ctrl+Shift+Del  清除Google浏览器缓存的快捷键  Ctrl+Shift+R  重新加载当前网页而不使用缓存内容

  8. Linux系统的快速启动机制(内核切换) 【转】

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4187846 原文地址:Linux系统的 ...

  9. Project Euler Problem4

    Largest palindrome product Problem 4 A palindromic number reads the same both ways. The largest pali ...

  10. java多线程计算和

    如题:如何利用多线程实现1~1000000000的和 本文利用Callable可以返回值的特性,并将执行结果用CompletionService进行存储,最后将分步值累加. import java.u ...