【问题标题】:Best way for WordPress Sanitizing $_GET and $_POSTWordPress 清理 $_GET 和 $_POST 的最佳方法
【发布时间】:2022-01-27 22:57:21
【问题描述】:

我正在开发 Wordpress 插件。 WP Plugin 目录中的审核小组要求通过 WP 函数在首次访问之前对每个 get 或 post 值进行清理。

通常我会检查 isset() 函数是否给出了一个值,由于上述要求,现在这是不可能的。

我现在的解决方案是做类似的事情

$foo = isset( sanitize_text_field( $_POST['foo'] ?? '' )) ? sanitize_text_field($_POST['foo']) : $something

但这会导致一些其他副作用并且不是最优雅的解决方案,所以我想知道是否有人对此有更好的想法?

谢谢。

【问题讨论】:

    标签: php wordpress sanitization


    【解决方案1】:

    你好,你的语法错了

     $foo = isset($_POST['foo']) ? sanitize_text_field($_POST['foo']) : $something;
    

    您不应该检查 isset 函数的结果。 isset 只是查看数组键是否存在。

    你可以像这样写一个简单的函数

     function myplugin_input_get($which, $default=null){
             return isset($_GET[$which]) ? sanitize_text_field($_GET[$which]) : $default;
     }
    
     function myplugin_input_post($which, $default=null){
             return isset($_POST[$which]) ? sanitize_text_field($_POST[$which]) : $default;
     }
    

    然后在您的代码中您只需使用它

     $some_key = myplugin_input_post('some_key');
     $some_other_key = myplugin_input_get('some_other_key', 'foobar');
    

    【讨论】:

    • 首先,我的语法正确且有效,其次 isset 函数还检查变量是否不为空 php manual 所以由于要求必须在首次访问之前对值进行清理,实际上那是我的问题。
    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多