在过去的12个月里,我的方法是调用每个处理$\\u POST或$\\u GET请求的函数。在每个函数中,检查两个值,有时检查更多值,以确定该函数是否适用,即表单名称和表单或URL中的特定值,数据验证也可以应用于该值。
我将所有$\\u POST和$\\u GET放在一个检查nonce的函数中,这样就不会在每个函数中调用nonce函数。然后,该process\\u POST\\u GET()函数包含()表单处理函数。
add_action(\'admin_init,process_POST_GET\');
它工作正常,没有性能缺陷。我们只是在讨论100 x if(isset())和一种保持一切整洁的非常简单的方法。我考虑了为每个函数添加一个add\\u action(),并意识到这比我的方法为Wordpress添加了更多的工作,因为它仍然需要调用每个函数。
下面的示例有很多“wpecus\\u0”,因为我最初没有使用类。否则,我们不需要在所有内容前面加前缀。
eval()
今天,我正在考虑使用eval()调用使用form\\u名称的函数。
/**
* $_POST and $_GET request processing procedure.
*
* Checks nonce from any form or URL, then includes functions that processing submission, then includes the
* file that determines which function to use to process the submission.
*
* @package WP e-Customers
* @since 0.0.1
*/
public function process_POST_GET(){
// form submission
if(isset($_POST[\'wpecus_post_processing_required\']) && $_POST[\'wpecus_post_processing_required\'] == true){
if(isset($_POST[\'wpecus_admin_referer\'])){
// a few forms have the wpecus_admin_referer where the default hidden values are not in use
check_admin_referer( $_POST[\'wpecus_admin_referer\'] );
}else{
// 99% of forms will use this method
check_admin_referer( $_POST[\'wpecus_hidden_panel_name\'] );
}
}
// url submission
if(isset($_GET[\'wpecusprocess\']) && isset($_GET[\'nonceaction\'])){
check_admin_referer( $_GET[\'nonceaction\'] );
}
// arriving here means check_admin_referer() security is positive
global $wpecus_debug_mode,$cont,$wpecus_is_free;
// if $wpecus_debug_mode set to true or 1 on wpecustomers.php we dump $_POST
if($wpecus_debug_mode){
echo \'<h1>$_POST</h1>\';
wpecus_var_dump($_POST);
echo \'<h1>$_GET</h1>\';
wpecus_var_dump($_GET);
}
// include form processing functions
require_once(WTG_WPECUS_PATH . \'processing/wpecus_form_two.php\');
require_once(WTG_WPECUS_PATH . \'processing/wpecus_form_one.php\');
eval(\'wpecus_postget_\' . $_POST[\'wpecus_form_name\']);
}
WP e-Customers我预计到2015年,WP电子客户将拥有大约200份管理表格。将有大量的“工具”供管理员通过Wordpress管理员在Wordpress和phpBB上执行各种任务。
Debug var_dump()我将所有请求放在一个函数中的方法可以很好地进行转储。您可能希望在没有标题的情况下执行此操作。我的wpecus\\u var\\u dump()函数还可以确保管理员登录,这是非常重要的安全性。另一点需要考虑的是,只有当插件位于开发博客上时,$wpecus\\u debug\\u mode才设置为true。它检查插件主文件中的域和安装路径。这意味着我可以快速分发插件的副本,并且调试会自动关闭。意外地将其打开是致命的,因此,如果要设置调试Wordpress$\\u POST和$\\u GET请求的过程,请不要仅使用var\\u dump()。您希望当您的no是查看屏幕的人时,转储消失。