3

そのため、javascript (ajax) は文字列化された JSON オブジェクトを php に送信し、php は json_decoded を取得し、オブジェクトのプロパティを参照してデータベースに保存します。

$Name = $Person->Name;
$Surname = $Person->Surname;

クライアントが悪意を持っている可能性があり、JSON をサーバーに送信する前に Person プロパティ名の一部の名前を変更した可能性があるため、この状態を回避したいと考えています。

そのため、クライアントは「Name」プロパティの名前を「Name555」に変更した可能性があるため、$Person->Name を取得しようとすると、スローしてエラーになると思いましたが、残念ながらそうではなく、代わりにクライアントに通知が返されます約:

Notice: Undefined property: stdClass::$Name in /home/aaa/public_html/saveperson.php on line 38

そのような場合にphpにエラーをスローさせるハックではない方法はありますか? または、サーバー側で問題を解決する一般的な方法 (好ましくは非ハッキー、おそらくいくつかの php.cnf 構成か何か?)。

前もって感謝します。

4

2 に答える 2

3

すでにエラーがスローされます。すぐに対処することに決めた場合は、カスタム エラー ハンドラを でインストールできますset_error_handler

とはいえ、これは受信データをチェックするための PHP の方法 (または実際の言語の方法) ではありません。堅牢なアプリケーションは、入力が有効であることを積極的にチェックし、有効でない場合は何かを実行します。この場合、次のようにします。

if (!isset($Person->Name)) {
    // do something here
}
于 2013-09-19T20:13:36.333 に答える
1

私のtry / catchステートメントは間違っていましたが、

if(!isset(@Person->Name)){ throw new Exception... }

動作するはずです。

于 2013-09-19T20:00:59.853 に答える