thinkphp5 は小さなプログラムかどうかを判断します

PHPz
リリース: 2023-05-29 12:23:40
オリジナル
1189 人が閲覧しました

小規模なプログラムの開発に伴い、小規模なプログラムを開発する Web アプリケーションがますます増えています。ミニプログラムを開発する場合、ミニプログラム専用のサービスを提供するためにアクセス要求を判断する必要があることがよくあります。

ThinkPHP5 フレームワークを使用して開発された Web アプリケーションの場合、アクセス要求が小さなプログラムからのものであるかどうかを判断するのは非常に簡単ですので、具体的な実装方法を以下に紹介します。

1. ミニ プログラム リクエストの特徴

ミニ プログラムが Web アプリケーションにリクエストを送信すると、Web アプリケーションがこれらのリクエストがミニプログラムからのものであることを特定します。その中で、一般的なミニ プログラム リクエストの特性は次のとおりです。

  1. User-Agent には、HTTP ヘッダーの User-Agent フィールドにミニ プログラム

の識別子が含まれます。 、ミニ プログラムには独自のロゴが付きます。たとえば、WeChat アプレットのロゴは「miniProgram」、Alipay アプレットのロゴは「AlipayClient」です。

  1. リファラーにはミニ プログラムの識別子が含まれます

ミニ プログラムが Web アプリケーションへのリクエストを開始すると、独自のソース情報、つまりリファラーフィールド。 Web アプリケーションは、Referer フィールドを使用して、リクエストがアプレットからのものであるかどうかを判断できます。たとえば、WeChat アプレットのリファラーには「servicewechat.com」が含まれます。

  1. ContentType は「application/json」です。

アプレットが Web アプリケーションにリクエストを送信するとき、通常は「application/json」形式で送信されます。したがって、Web アプリケーションは、ContentType フィールドを通じてリクエストがアプレットからのものであるかどうかを判断できます。

次に、上記の特性を使用して、リクエストが排他的なサービスを提供するミニ プログラムからのものであるかどうかを判断できます。

2. ThinkPHP5 を使用してミニ プログラム リクエストを決定する

ThinkPHP5 では、Request クラスを使用してリクエストの関連情報を取得および決定できます。具体的な実装方法は次のとおりです:

1. 要求された User-Agent 情報を取得します:

$userAgent = $this->request->header('User-Agent');
ログイン後にコピー

2. 要求された Referer 情報を取得します:

$referer = $this->request->header('Referer');
ログイン後にコピー

3.要求された ContentType 情報 :

$contentType = $this->request->contentType();
ログイン後にコピー

上記のコードは、コントローラー メソッドに配置して呼び出すことができます。

3. ミニ プログラム リクエスト インターセプター

コントローラー メソッドでミニ プログラム リクエストであるかどうかを直接判断することに加えて、ThinkPHP5 のリクエスト インターセプターを使用してミニ プログラムをリクエストすることもできます。そして加工。

具体的な実装方法は以下のとおりです:

1. アプリケーションディレクトリにミドルウェアディレクトリを作成し、その中にCheckMiniProgram.phpファイルを作成します(ファイル名はカスタマイズ可能) 。

2. CheckMiniProgram.php ファイルにインターセプター コードを記述して、リクエストがミニ プログラムからのものであるかどうかを判断し、ミニ プログラムからのものである場合は、関連する処理を実行します。例:

namespace appmiddleware;

use thinkRequest;

class CheckMiniProgram
{
    public function handle(Request $request, Closure $next)
    {
        $contentType = $request->contentType();
        $userAgent = $request->header('User-Agent');
        $referer = $request->header('Referer');

        if ($contentType == 'application/json' &&
            strpos($userAgent, 'miniProgram') !== false &&
            strpos($referer, 'servicewechat.com') !== false) {
            //是小程序请求,进行相关处理
            ...
        } else {
            //不是小程序请求,直接放行
            return $next($request);
        }
    }
}
ログイン後にコピー

上記のコードでは、まず $request->contentType() メソッドを使用して要求された ContentType 情報を取得し、次に $request->header() メソッドを使用して取得します。要求されたユーザーエージェントおよびリファラー情報。最後に、その情報がミニプログラムが要求する特性を満たしているかどうかを判断し、満たしている場合は対応する処理を実行し、そうでない場合はそのまま公開します。実際の処理ロジックは、上記のコードの「...」の部分に記入する必要があることに注意してください。

3. アプリケーション ディレクトリの middleware.php 構成ファイルに CheckMiniProgram ミドルウェアを追加します:

return [
    'CheckMiniProgram' => appmiddlewareCheckMiniProgram::class,
];
ログイン後にコピー

このようにして、ミニ プログラム リクエストをインターセプトし、アプリケーションのすべてのリクエストで処理できます。 . .

4. まとめ

この記事では、ThinkPHP5を使ってミニプログラムリクエストを判定する方法と、ミニプログラムリクエストをインターセプトして処理する方法を紹介します。リクエスト内のUser-Agent、Referer、ContentTypeなどの情報を判断することで、リクエストがミニプログラムからのものであるかどうかを簡単に判断し、ミニプログラム専用のサービスを提供できます。

以上がthinkphp5 は小さなプログラムかどうかを判断しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート