• 初识thinkphp(1)


        作为一名准备成为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 appindexcontroller;
    
    use thinkController;
    use thinkDb;
    
    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文件也进行了相应参数的输出)

  • 相关阅读:
    音律入门
    [转]MIDI常识20条
    Java使用代理服务器
    java8日期时间
    误删课表系统
    Uncaught Error: Bootstrap tooltips require Tether (http://github.hubspot.com/tether/)
    SpringBoot应用部署[转]
    如何学习新技术
    Maven使用archetype迅速生成项目骨架
    两个月打工总结
  • 原文地址:https://www.cnblogs.com/sijidou/p/9162309.html
Copyright © 2020-2023  润新知