Filter_Plugin_Cmd_Ajax接口分析

admin2017-09-202598

Filter_Plugin_Cmd_Ajax是一个接口,当我们访问http://www.zblog.dev/zb_system/cmd.php?act=ajax&src=WeChatCollect_SaveProject的时候。

cmd.php

<?php
require './function/c_system_base.php';
$zbp->Load();
$action = GetVars('act', 'GET');

if (!$zbp->CheckRights($action)) {$zbp->ShowError(6, __FILE__, __LINE__);die();}

foreach ($GLOBALS['hooks']['Filter_Plugin_Cmd_Begin'] as $fpname => &$fpsignal) {
    $fpname();
}

switch ($action) {
    case 'ajax':
    foreach ($GLOBALS['hooks']['Filter_Plugin_Cmd_Ajax'] as $fpname => &$fpsignal) {
        $fpname(GetVars('src', 'GET'));
    }
    
}

在插件中打印

var_dump($GLOBALS['hooks']['Filter_Plugin_Cmd_Ajax']);

结果:array(1) { ["插件名_Filter_Plugin_Cmd_Ajax"]=> &string(0) "" }

那么$fpname就是上面数组的键,打印

var_dump($fpname);

结果:string(36) "WeChatCollect_Filter_Plugin_Cmd_Ajax"

那么&$fpname就是上面数组的值,打印

var_dump($fpsignal);

结果:string(0) ""

那么实际上$fpname(GetVars('src', 'GET'));就是

WeChatCollect_Filter_Plugin_Cmd_Ajax(GetVars('src', 'GET'))

GetVars函数功能类似于$_GET(),GetVars('src', 'GET')等于$_GET("src")

GetVars('src', 'GET')打印出来是string(25) "WeChatCollect_SaveProject"

$fpname(GetVars('src', 'GET'));就是WeChatCollect_Filter_Plugin_Cmd_Ajax("WeChatCollect_SaveProject");

WeChatCollect_Filter_Plugin_Cmd_Ajax()是自己定义的函数,非zblog函数。接收方式如下:

function WeChatCollect_Filter_Plugin_Cmd_Ajax() {
   global $zbp;
   $action = GetVars('src', 'GET');
   $array  = array();
   switch ($action) {
       case "WeChatCollect_SaveProject":
           $id     = (int) $_POST['ID'];
            if (!isset($id)) {
               $array['msg'] = '系统错误!';
               break;
            }
            $links=trim(GetVars('Links', 'POST'));
            if($links==''){
               $array['msg'] = '链接不能为空!';
               break;
            }
            $p = new WeChatCollect_Project();
            if ($id > 0) {
               $p->LoadinfoByID($id);
            }
            foreach ($zbp->datainfo['WeChatCollect_Project'] as $key => $value) {
               if ($key == 'ID') {continue;}
               if (isset($_POST[$key])) {
                  $p->$key = trim(GetVars($key, 'POST'));
               }
            }
            $p->Time=time();
            $p->Save();    //执行保存
            $array['msg'] = '保存成功';
            $array['redirect_url'] = $zbp->host . 'zb_users/plugin/WeChatCollect/ProjectList.php';//定义跳转到哪个页面
       break;
   }

对插件的配置信息进行保存。

网友评论