哪些SQL/WordPress查询需要一个现时值?

时间:2016-02-13 作者:mesqueeb

我是一名PHP/JavaScript开发人员,对WordPress是新手。我们公司的网站是建立在WordPress上的。然而,我创建了许多定制的PHP页面,却没有太在意WordPress框架。

当创建表单来编辑内容(如帖子)时,我注意到很多事情都不能与$wpdb->query(insert some SQL here) 但经常使用WordPresswp_update_post()update_post_meta(), 等

我想知道这是否是因为自定义查询需要临时检查?我对nonces也很陌生,但在使用SQL从WordPress数据库获取或编辑数据时,我经常感到困惑,因为我将如何以及何时使用nonces。

另一方面,WordPress函数是否有特殊的nonce检查?

1 个回复
最合适的回答,由SO网友:Adam 整理而成

您可能对WordPress中nonce的用途和功能有点困惑。

建议阅读:

  • WordPress Nonces
  • An Introduction to WordPress Nonces with Examples
  • Protect_Queries_Against_SQL_Injection_Attacks

    Nonces在某种程度上帮助您确保对给定URL发出的请求的有效性,或使用特定表单提交数据,无论是在后端还是前端。

    这与wpdb class.

    As evidenced in your previous question your query was not working due to improper SQL synatx.

    遵循的一个好规则是,URL或表单,尤其是那些在数据库上执行任何操作的URL或表单,应该始终伴随一个nonce,您可以根据它来验证请求的有效性。

    然后,在将数据插入数据库时,如果必须编写原始SQL查询,则应仅使用wpdb class, 尤其是$wpdb->query() 方法以及$wpdb->prepare() 针对SQL注入进行项目的方法:Protect_Queries_Against_SQL_Injection_Attacks

    在发动机罩下,使用以下功能时wp_insert_postwp_update_post, WordPress调用$wpdb->insert()$wpdb->update() 依次调用$wpdb->query( $wpdb->prepate() ), 所以它为你提供了消毒服务。

    这就是为什么建议在插入或更新帖子、Posteta、users、usermeta等时使用WordPress的核心功能。

    总之,一定要阅读上面概述的参考资料,因为它们将极大地帮助您进一步了解nonce是什么、何时使用以及如何使用。