thinkphp5 post が値を取得できない場合はどうすればよいですか?
thinkphp5 post は、TP5 が strpos 関数を使用してヘッダーの content-type 値で app/json 文字列を検索するため、値を取得できません。解決策は、ヘッダーの content-type 値を app に設定することです。 /json.それだけです。
このチュートリアルの動作環境: Windows 7 システム、ThinkPHP バージョン 5、Dell G3 コンピューター。
thinkphp5 投稿で値を取得できない場合はどうすればよいですか?
ThinkPHP5 がクライアントから渡された Json パラメータを受信できない問題の解決策 Post
私はこの期間に API 開発を学習しており、インターネットからコースを受講し、それに従っています。つい昨日、講師が半日デバッグをし続けたという状況に再び遭遇しました。私が遭遇した問題は、API の特定の Post インターフェイスをテストするために Postman を使用したときに発生した問題でした。 , どのようにリクエストを送信しても、常にパラメーターの検証が失敗したというメッセージが表示されました。デバッグプロセス中に、あるとき、Body テーブルを介してパラメーターを渡す方法を使用したところ、API が魔法のように機能しました。そこで、あると判断しました。以前、Json の送信に問題があったため、インターネット中を探しましたが、解決策はありませんでした [ただし、2 つのナレッジ ポイントを取得して、記事の最後に記載してください]。
TP5の問題については、Du Niangができない場合はソースコードを確認することしかできないので、少しずつエラーを追跡し、最終的に問題を発見しました~
TP5 は strpos 関数を使用して、ヘッダーの content-type 値内の app/json 文字列を検索することがわかりました。つまり、ヘッダーの content-type 値を app/json に設定する必要があり、そうでない場合、TP5 は渡したとは思わないでください。 は Json パラメーターであり、値を Request::post に空に設定します。
上記により、TP5 がクライアント Post から渡された Json パラメータを受信できない問題が解決されました。
2 つの知識:
content-type が「application/json」である Data php は直接認識できないため、$_POST 配列は空です。解決策: $GLOBALS['HTTP_RAW_POST_DATA'] を使用して元のデータを取り出し、それを json_decode するだけです [この方法を使用すると、php.ini の always_populate_raw_post_data 値を On に設定する必要があります][$HTTP_RAW_POST_DATA、これにはPOSTデータの元データ。ただし、これはスーパーグローバル変数ではないため、関数で使用するには、 global として宣言するか、代わりに $GLOBALS['HTTP_RAW_POST_DATA'] を使用する必要があります。 ];
上記のメソッドの代わりに file_get_contents('php://input') を使用すると、受信した Json パラメータを直接取得できます [TP5 ソース コードを読んだところ、初期値を取得するためにもこのメソッドを使用すること]。
推奨学習: 「thinkPHP ビデオ チュートリアル 」
以上がthinkphp5 post が値を取得できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Pagoda に thinkphp5 をデプロイするときに報告されたエラーの解決策: 1. Pagoda サーバーを開き、php pathinfo 拡張機能をインストールして有効にします; 2. 「.access」ファイルをコンテンツ「RewriteRule ^(.*)$index.php」で構成します。 ?s=/$1 [QSA ,PT,L]”; 3. Web サイト管理で、thinkphp の疑似静的機能を有効にするだけです。

thinkphp5 の URL 書き換えが機能しない場合の解決策: 1. mod_rewrite.so モジュールが httpd.conf 設定ファイルにロードされているかどうかを確認します; 2.AllowOverride None の None を All に変更します; 3. Apache 設定ファイル .htaccess を「RewriteRule ^」に変更します(.*)$index.php [L,E=PATH_INFO:$1]」を選択して保存します。

TP5 が strpos 関数を使用してヘッダーの content-type 値で app/json 文字列を検索するため、thinkphp5 post は値を取得できません。解決策は、ヘッダーの content-type 値を app/json に設定することです。

thinkphp5 が要求された URL を取得するためのメソッド: 1. "\think\Request" クラスの "$request = Request::instance();" メソッドを使用して、現在の URL 情報を取得します。 2. 組み込みヘルパーを使用します。関数「$request-> url()」を使用して、ドメイン名を含む完全な URL アドレスを取得します。

thinkphp5 タイトル バー アイコンを削除する方法: 1. thinkphp5 フレームワーク public で favicon.ico ファイルを見つけます; 2. ファイルを削除するか、別の画像を選択して名前を favicon.ico に変更し、元の favicon.ico ファイルを置き換えます。

thinkphp5 でコントローラーが存在しないというプロンプトが表示される場合の解決策: 1. 対応するコントローラーの名前空間が正しく記述されているかどうかを確認し、正しい名前空間に変更します; 2. 対応する tp ファイルを開いてクラス名を変更します。

ThinkPHP5 で昨日のデータをクエリする方法: 1. ThinkPHP5 関連ファイルを開きます; 2. 式「db('table')->whereTime('c_time', 'yesterday')->select();」を使用して昨日のデータをクエリします。 。

thinkphp5 でエラー プロンプトを設定する方法: 1. プロジェクト ルート ディレクトリのパブリック フォルダーに入り、index.php エントリ ファイルを開きます; 2. デバッグ モード スイッチに関するコメントを表示します; 3. 「APP_DEBUG」定数の値を調整しますtrue に設定すると、エラー メッセージ プロンプトが表示されます。
