3

所以javascript(ajax)将一个字符串化的JSON对象发送到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

在这种情况下,是否有任何非 hacky 方法可以让 php 抛出错误?或者在服务器端解决问题的任何一般方法(最好是非hacky,也许是一些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 回答