所以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
在这种情况下,有没有任何非黑客方法可以让 php 抛出错误?或者在服务器端解决问题的任何通用方法(最好是非黑客的,也许是一些php.cnf配置或其他东西?
提前谢谢你。
它已经抛出了一个错误。如果您决定立即采取行动,则可以安装带有 set_error_handler
的自定义错误处理程序。
也就是说,这不是PHP检查传入数据的方式(或任何语言的方式)。健壮的应用程序会主动检查输入是否有效,如果无效,则执行某些操作。在这种情况下,您可以使用:
if (!isset($Person->Name)) {
// do something here
}
我的尝试/捕获语句是错误的,但是
if(!isset(@Person->Name)){ throw new Exception... }
应该工作。