www.gusucode.com > baigo CMS PHP开源网站管理系统 v1.2.2源码程序 > baigocms_v1.2.2/bg_sso/core/class/sync.class.php

    <?php
/*-----------------------------------------------------------------
!!!!警告!!!!
以下为系统文件,请勿修改
-----------------------------------------------------------------*/

//不能非法包含或直接执行
if(!defined("IN_BAIGO")) {
    exit("Access Denied");
}


/*-------------同步类-------------*/
class CLASS_SYNC {

    private $obj_base; //配置
    private $config; //配置
    public $log; //配置

    function __construct() { //构造函数
        $this->obj_base   = $GLOBALS["obj_base"]; //获取界面类型
        $this->config     = $this->obj_base->config;
        $this->log        = include_once(BG_PATH_LANG . $this->config["lang"] . "/log.php"); //载入日志内容
        $this->arr_return = array(
            "prd_sso_ver" => PRD_SSO_VER,
            "prd_sso_pub" => PRD_SSO_PUB,
        );
    }


    function app_chk($arr_appRequest, $arr_appRow) {
        if ($arr_appRequest["alert"] != "ok") {
            return $arr_appRow;
        }

        if ($arr_appRow["app_status"] != "enable") {
            return array(
                "alert" => "x050402",
            );
        }

        if ($arr_appRow["app_key"] != $arr_appRequest["app_key"]) {
            return array(
                "alert" => "x050217",
            );
        }

        return array(
            "alert" => "ok",
        );
    }


    function sync_fetch($chk_token = false) {
        $_arr_time = validateStr(fn_get("time"), 1, 0);
        switch ($_arr_time["status"]) {
            case "too_short":
                return array(
                    "alert" => "x090201",
                );
            break;

            case "ok":
                $_tm_time = $_arr_time["str"];
            break;
        }

        $_arr_random = validateStr(fn_get("random"), 1, 0);
        switch ($_arr_random["status"]) {
            case "too_short":
                return array(
                    "alert" => "x090202",
                );
            break;

            case "ok":
                $_str_rand = $_arr_random["str"];
            break;
        }

        $_arr_signature = validateStr(fn_get("signature"), 1, 0);
        switch ($_arr_signature["status"]) {
            case "too_short":
                return array(
                    "alert" => "x090203",
                );
            break;

            case "ok":
                $_str_sign = $_arr_signature["str"];
            break;
        }

        $_arr_code = validateStr(fn_get("code"), 1, 0);
        switch ($_arr_code["status"]) {
            case "too_short":
                return array(
                    "alert" => "x080202",
                );
            break;

            case "ok":
                $_str_code = $_arr_code["str"];
            break;
        }

        $_arr_key = validateStr(fn_get("key"), 1, 0);
        switch ($_arr_key["status"]) {
            case "too_short":
                return array(
                    "alert" => "x080203",
                );
            break;

            case "ok":
                $_str_key = $_arr_key["str"];
            break;
        }

        $_arr_result = $this->sync_decode($_str_code, $_str_key);

        if (!isset($_arr_result["app_id"])) {
            return array(
                "alert" => "x050203",
            );
        }

        $_arr_appId = validateStr($_arr_result["app_id"], 1, 0, "str", "int");
        switch ($_arr_appId["status"]) {
            case "too_short":
                return array(
                    "alert" => "x050203",
                );
            break;

            case "format_err":
                return array(
                    "alert" => "x050204",
                );
            break;

            case "ok":
                $_arr_syncGet["app_id"] = $_arr_appId["str"];
            break;
        }

        if (!isset($_arr_result["app_key"])) {
            return array(
                "alert" => "x050214",
            );
        }

        $_arr_appKey = validateStr($_arr_result["app_key"], 1, 64, "str", "alphabetDigit");
        switch ($_arr_appKey["status"]) {
            case "too_short":
                return array(
                    "alert" => "x050214",
                );
            break;

            case "too_long":
                return array(
                    "alert" => "x050215",
                );
            break;

            case "format_err":
                return array(
                    "alert" => "x050216",
                );
            break;

            case "ok":
                $_arr_syncGet["app_key"] = $_arr_appKey["str"];
            break;
        }

        if (!fn_baigoSignChk($_tm_time, $_str_rand, $_arr_syncGet["app_id"], $_arr_syncGet["app_key"], $_str_sign)) {
            $_arr_return = array(
                "alert" => "x050403",
            );
            return $_arr_return;
        }

        $_arr_syncGet["user_id"]  = $_arr_result["user_id"];
        $_arr_syncGet["alert"]    = "ok";

        return $_arr_syncGet;
    }

    /** 编码
     * sync_encode function.
     *
     * @access public
     * @param mixed $arr_data
     * @param mixed $str_key
     * @return void
     */
    function sync_encode($arr_data, $str_key) {
        unset($arr_data["alert"]);

        $_str_src     = fn_jsonEncode($arr_data, "encode");
        $_str_code    = fn_baigoEncode($_str_src, $str_key);

        return $_str_code;
    }


    private function sync_decode($_str_code, $_str_key) {
        $_str_result  = fn_baigoDecode($_str_code, $_str_key);
        $_arr_result  = fn_jsonDecode($_str_result, "decode");

        return $_arr_result;
    }


    /** 返回结果
     * halt_re function.
     *
     * @access public
     * @param mixed $arr_re
     * @return void
     */
    function halt_re($arr_re) {
        $arr_halt = array_merge($this->arr_return, $arr_re);

        exit(fn_jsonEncode($arr_halt, "no")); //输出错误信息
    }


    function chk_install() {
        if (file_exists(BG_PATH_CONFIG . "is_install.php")) { //验证是否已经安装
            include_once(BG_PATH_CONFIG . "is_install.php");
            if (!defined("BG_INSTALL_PUB") || PRD_SSO_PUB > BG_INSTALL_PUB) {
                $_arr_return = array(
                    "alert" => "x030411"
                );
                $this->halt_re($_arr_return);
            }
        } else {
            $_arr_return = array(
                "alert" => "x030410"
            );
            $this->halt_re($_arr_return);
        }
    }
}