美高梅4858-美高梅4858mgm-[官方网站]

标签 ThinkPHP 下的文章

Cloudreve 屏蔽 ThinkPHP 核心文件,防止被人恶意攻击

根据 ThinkPHP 的默认配置,index.php 入口文件本应在 public/index.php 的,但是 Cloudreve 直接将它移动到程序根目录,ThinkPHP 框架 的所有文件都暴露在公网下,如果 ThinkPHP 出现什么漏洞,攻击者可以直接对其进行攻击

为了避免这种,我想到了两种方法

一种是使用 Nginx URL重写(伪静态)进行屏蔽:

这里屏蔽掉了 ThinkPHP 核心文件及一些安装文件,保证其不会暴露在公网中
location ~ ^/(extend|application|thinkphp|CloudreveInstaller|vendor|extend)/*.*$
{
        return 404;
}

location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|composer.lock|mysql.sql|deploy.sh|composer.json)
{
        return 404;
}

另一种是将 index.php 移动到 public 下

这个移动之后有许多地方需要更改,我嫌麻烦,没去弄

记一次 ThinkPHP6 环境变量定义文件配置

默认安装后的根目录有一个 .example.env 环境变量示例文件,你可以直接改成 .env 文件后进行修改。

我理解有误,我以为只要是 .env 后缀的文件系统就可以自动载入,结果就是将 .example.env 改成 .env 文件名,然后将它放到网站的根目录,与 think 文件同级,如图:
Snipaste_2020-01-24_08-04-28.png

然后可以通过 env 助手函数测试下 env('database.type') 看是否正常输出

ThinkPHP 5 命令行下实行控制器下的方法

假设有这样一个 URL:/v1/time_table/write_table

你想要再 命令行 下实行,你可以这样运行

1.转到 public 目录下

cd /www/wwwroot/nowtime.cc/public

2.实行控制器下的某一个方法

php index.php v1/time_table/write_table
对于 THinkPHP 5 以上版本都可以是用此方法

ThinkPHP 5.1 中间件笔记

在用 ThinkPHP 写 API 的时候,在同一个模块下,有些方法(function)需要校验登录,有一些方法(function)不需要检验登录,然后我使用了“笨方法”,需要进行校验登录的方法(function)上都得写几行判断是否登录的,导致代码冗余,代码质量不高,今天仔细阅读了 ThinkPHP 5.1 开发文档,学习了一个新技能——中间件(https://www.kancloud.cn/manual/thinkphp5_1/564279)

在此记录下,因为对 ThinkPHP 框架 了解不够深入,难免有错误之处,请dalao指点更正????


创建中间件

Think PHP 5.1 关于中间件详细用法请查看官方文档:https://www.kancloud.cn/manual/thinkphp5_1/564279

方法一:

使用命令创建快捷创建(需要设置好 PHP 变量,你看不懂这个你看下一个方法吧):

php think make:middleware Auth

不出意外,会返回如下提示:

E:\PhpStorm_Project\x.nowtime.cc>php think make:middleware Auth
Middleware created successfully.

然后就会在 application/http/middleware 路径下创建一个 Auth.php 文件

方法二:

手动创建 application/http/middleware/Auth.php 文件

编写代码

编辑 application/http/middleware/Auth.php 文件,编写业务逻辑:

- 阅读剩余部分 -

ThinkPHP 5.1 使用 Md\MDAvatars 输出无法显示图片 的 解决办法

代码如下:

<?php
/**
 * Created by PhpStorm.
 * Date: 2019/1/20
 * Time: 9:53
 */

namespace app\api\controller;

use Md\MDAvatars;

class Avatars
{
    public function index()
    {
        $Avatar = new MDAvatars('X', 512);
        $Avatar->Output2Browser();
    }
}

输出结果

Snipaste_2019-01-20_10-08-47.png

解决办法

$Avatar->Output2Browser(); 上一行加一句 ob_end_clean(); 即可解决

<?php
/**
 * Created by PhpStorm.
 * Date: 2019/1/20
 * Time: 9:53
 */

namespace app\api\controller;

use Md\MDAvatars;

class Avatars
{
    public function index()
    {
        $Avatar = new MDAvatars('X', 512);
        ob_end_clean();
        $Avatar->Output2Browser();
    }
}

Snipaste_2019-01-20_10-12-15.png

XML 地图 | Sitemap 地图