背景
現在安定した PHP V7.2 では、JSON が無効であることを判断したい場合は、json_last_error() 関数を使用して検証する必要があります:
>>> json_decode("{"); => null >>> json_last_error(); => 4 >>> json_last_error() === JSON_ERROR_NONE => false >>> json_last_error_msg() => "Syntax error"
たとえば、Larave のここをチェックして、 JSON エンコーディングが呼び出されることはエラーを引き起こしません:
// Once we get the encrypted value we'll go ahead and base64_encode the input // vector and create the MAC for the encrypted value so we can then verify // its authenticity. Then, we'll JSON the data into the "payload" array. $json = json_encode(compact('iv', 'value', 'mac')); if (json_last_error() !== JSON_ERROR_NONE) { throw new EncryptException('Could not encrypt the data.'); } return base64_encode($json);
少なくとも JSON エンコーディング/デコーディングにエラーがあるかどうかを判断することはできますが、エラー コードとエラー メッセージを発行する例外をスローするのと比較すると、少し面倒です。 。
JSON をキャプチャして処理するためのオプションはすでにありますが、新しいバージョンで何ができるかを見てみましょう!
PHP 7.3 のスロー用エラーフラグ
新しいオプションフラグ JSON_THROW_ON_ERROR を使用すると、try/catch を使用するようにコードのこのブロックを書き換えることができます。
おそらく次のようなものになるでしょう:
use JsonException; try { $json = json_encode(compact('iv', 'value', 'mac'), JSON_THROW_ON_ERROR); return base64_encode($json); } catch (JsonException $e) { throw new EncryptException('Could not encrypt the data.', 0, $e); }
この新しいスタイルは、 json_last_error() を検索してオプションを照合する代わりに JSON データを受信する場合、JSON エンコードとデコードでエラー ハンドラーを利用できるユーザー コードに特に便利だと思います。
この json_decode() 関数にはいくつかのパラメーターがあり、エラー処理を利用したい場合は PHP 7.3 以下のようになります:
use JsonException; try { return json_decode($jsonString, $assoc = true, $depth = 512, JSON_THROW_ON_ERROR); } catch (JsonException $e) { // Handle the JSON Exception } // Or even just let it bubble up... /** * Decode a JSON string into an array * * @return array * @throws JsonException */ function decode($jsonString) { return json_decode($jsonString, $assoc = true, $depth = 512, JSON_THROW_ON_ERROR); }
エラー コードとエラー メッセージを取得します
以前は JSON エラー コードを取得しました次の関数を使用します:
// Error code json_last_error(); // Human-friendly message json_last_error_msg();
新しい JSON_THROW_ON_ERROR を使用する場合、コードを使用してメッセージを取得する方法は次のとおりです:
try { return json_decode($jsonString, $assoc = true, $depth = 512, JSON_THROW_ON_ERROR); } catch (JsonException $e) { $e->getMessage(); // like json_last_error_msg() $e->getCode(); // like json_last_error() }

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
