我一直使用更多的 phpish$this->_request->getPost('this')
和$this->_request->getQuery('that')
(这个与 getquery 而不是 getGet 不太合乎逻辑)。
这两个哪个最好?(或者如果有另一种更好的方法)
只是对选择的快速解释getQuery()
。措辞的选择来自它是什么类型的数据,而不是它是如何到达那里的。GET 和 POST 只是请求方法,携带各种信息,包括在 POST 请求的情况下称为“发布数据”的部分。GET请求没有这样的块,它携带的任何可变数据都是url查询字符串的一部分(?后面的部分)。
因此,虽然getPost()
从 POST 请求的发布数据部分getQuery()
获取数据,但从 GET 或 POST 请求(以及其他 HTTP 请求方法)的查询字符串中检索数据。
(请注意,GET 请求不应用于任何可能产生副作用的事情,例如更改数据库行)
因此,在回答您的第一个问题时,请使用getPost()
andgetQuery()
方法,这样,您可以确定数据源在哪里(如果您不关心,getParams()
也可以使用,但可能包含其他数据)。
使用这种方法验证 php 输入的最佳实践是什么?
验证输入的最佳位置是您首次使用它的位置。也就是说,当您从 、 或 中拉取getParams()
它getPost()
时getQuery()
。这样,您的数据在您需要的地方始终是正确的,并且如果您将其传递出去,您就知道它是安全的。请记住,如果您将它传递给另一个控制器(或控制器操作),您可能应该在那里再次检查它,以确保安全。如何执行此操作取决于您的应用程序,但仍需要检查。