1. 程式人生 > >初識thinkphp(1)

初識thinkphp(1)

html www 能力 搭建 目的 格式 nbsp 頁面 url

作為一名準備成為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 <[email protected]>
// +----------------------------------------------------------------------

// [ 應用入口文件 ]

// 定義應用目錄
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 <[email protected]>
// +----------------------------------------------------------------------
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)