Thinkphp快速入门(一)

前言

使用的是tp6 版本

安装
# 通过composer安装,目录名thinkphp
# 我在 /Users/xieruixiang/php 目录下执行
composer create-project topthink/think thinkphp
# 得到 /Users/xieruixiang/php/thinkphp
省略index.php
# 这里我使用nginx + php-fpm
# 省略index.php,配置nginx
if (!-e $request_filename) {
 rewrite  ^(.*)$  /index.php?s=/$1  last;
}

# 设置完后 localhost/index.php/home/look url就等价于
# localhost/home/look 
开启多应用
# 不介绍单应用了,一般一个项目不会只有一个应用,其次多应用兼容单应用
# 通过 composer require topthink/think-multi-app 安装多应用组件
# 其原理通过增加一个中间件来使路由指向正确的位置
# 安装后的app下的每一个目录都可以作为应用
# 每个应用下可以有独立的 controller,model,view,route,config 等目录
composer require topthink/think-multi-app
常用路由
# 默认路由
# 要带上应用模块
# /应用名/控制器名/方法名
# 以 app/admin/controller/Home.php 控制器为例 其中有look方法
# 如果要访该方法,通过
localhost/admin/home/look

# 如果控制器方法不是在controller目录下,而是在controller的目录下
# 则需要通过 /应用名/子目录.控制器名/方法名进行访问
# 以 app/admin/controller/base/Home.php 控制器为例 其中有look方法
http://localhost/admin/base.home/look
# 指定路由
# 写在route目录下
# 以admin应用为例 app/admin/route/web.php 
# web.php 可以改成其他名称,反正tp会加载route下的所有php文件
# 使用 think\facade\Route 门面
# Route::"method"("url","controller/action")
# method 限制其访问方法
# url 路由名 访问时需要带上应用名   /应用名/url
# controller控制器在当前应用中的位置
# action 即controller的方法
use think\facade\Route;
Route::get('home', 'base.home/look');
# 可以用过 http://localhost/admin/home 访问
# 其等价于 http://localhost/admin/base.home/look
# 资源路由
# Route::resoure("url","controller")
# url 路由名 访问时需要带上应用名   /应用名/url
# controller控制器在当前应用中的位置
# 这条路由会创建7条符合RESTful api的路由
Route::get('home', 'base.home');
# 等价创建
Route::get('home', 'base.home/index');
Route::get('home/create', 'base.home/create');
Route::post('home', 'base.home/save');
Route::get('home/:id', 'base.home/read');
Route::get('home/:id/edit', 'base.home/edit');
Route::put('home/:id', 'base.home/update');
Route::delete('home/:id', 'base.home/delete');
验证码
# 使用think-captcha 扩展
composer require topthink/think-captcha
# 可以通过config/captcha.php配置验证码的参数
return [
    //验证码位数
    'length' => 5,
    // 验证码字符集合
    'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
    // 验证码过期时间
    'expire' => 1800,
    // 是否使用中文验证码
    'useZh' => false,
    // 是否使用算术验证码
    'math' => false,
    // 是否使用背景图
    'useImgBg' => false,
    //验证码字符大小
    'fontSize' => 25,
    // 是否使用混淆曲线
    'useCurve' => true,
    //是否添加杂点
    'useNoise' => true,
    // 验证码字体 不设置则随机
    'fontttf' => '',
    //背景颜色
    'bg' => [243, 251, 254],
    // 验证码图片高度
    'imageH' => 100,
    // 验证码图片宽度
    'imageW' => 500,

    // 添加额外的验证码设置
     'verify' => [
         'length'=>4,
    ],
];

# 在模版中简单使用,其加载的是config/captcha.php 配置
<div>{:captcha_img()}</div>
# 要想灵活使用可以自己定义方法
# 方法中通过captcha("config")使用创建验证码方法
# config 为 null 时加载 config/captcha.php
# config 不为null 时加载 config/captcha.php 中的 “config” 属性
captcha(‘verify’)
# 加载的是 config/captcha.php 中的verify属性
# 故验证码只有四个组成
# 验证码的验证需要开启session
# seesion开启依赖于中间件
# 我只在admin应用中使用session
# app/admin/middleware.php 开启session
return [
    \think\middleware\SessionInit::class
];

# 第一中验证验证码是否正确
# captcha_check($captcha) 
# $captcha验证码的值
# 正确返回true,错误返回false
captcha_check("abc12") 

第二种通过验证器验证


namespace app\admin\controller\base;

use app\BaseController;
use think\Validate;

class Home extends BaseController
{
    public function index()
    {
        return captcha('verify');
    }

    public function check()
    {
        $captcha = input('captcha', "");
        $validate = new Validate();

        $validate->rule(['captcha' => 'require|captcha'])
            ->message(['captcha.captcha' => '验证码错误'])
            ->check(['captcha' => $captcha]);

        if ($error = $validate->getError()) {
            return $error;
        }

        return "验证码正确";
    }

}

你可能感兴趣的:(#,Thinkphp,PHP,php,thinkphp)