所以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配置或什么?)。
提前谢谢。
答案 0 :(得分:2)
它已经抛出错误。如果您决定立即对其进行操作,则可以使用set_error_handler
安装自定义错误处理程序。
也就是说,这不是检查传入数据的PHP方式(或任何语言的方式)。一个强大的应用程序会主动检查输入是否有效,如果不是则执行某些操作。在这种情况下,您可以使用:
if (!isset($Person->Name)) {
// do something here
}
答案 1 :(得分:1)
我的try / catch语句错误,但是
if(!isset(@Person->Name)){ throw new Exception... }
应该有用。