请教作过UC方面的高手!!!!!

PHP code

function action_synlogin($get='') {
            if(time() - $get['time']<=3600){
                !API_SYNLOGIN && exit(API_RETURN_FORBIDDEN);
                $account = $this->loadModel('member/account');
                $o=$this->loadModel('utility/charset');
                if (strtoupper(UC_DBCHARSET)<>"UTF8")
                    $get['username'] = $o->local2utf($get['username'],'zh');
                if ($data=uc_get_user($get['username'])){
                    list($uid, $uname, $email) = $data;
                }
                $account->PlugUserRegist('',$get['uid'],$get['username'],$get['password'],$email);

            }else{
                exit(API_RETURN_FAILED);
            }

        }



这是SHOPEX 4.85 api/uc.php 关于同步用户的一段代码,本人刚刚接手这个网站程序,以前会一点ASP.NET没有学过PHP,
请高手给做一上注释,还有,($get='')关于这个参数为是什么意思?是不是如果没有值那么它的值就等于=""?

作者: zhwedo0822   发布时间: 2011-06-09

这应该是登录用的代码吧,($get='')这个意思是,当直接调用action_synlogin()时,$get='',这是防止代码出现语法错误的。
php不难的,我当初也是这样转过来的。

作者: hzhsky1985   发布时间: 2011-06-09

PHP code

 $method = 'action_'.$action;


刚刚好好的研究了一下,

这个原本的文件有一个IF的控制语句,成功则执行,其内有一个继承类
PHP code
class ucCore extends shopCore{}

上面的函数就是在这个类里面。也就IF结果为真时,调用这个类里的函数。
PHP code

if (a==true){
 class ucCore extends shopCore{
//这里是run函数        
function run(){
            $this->definevar();
            require_once(CORE_DIR.'/lib/uc_client/client.php');
            $code = $_GET['code'];
            parse_str($this->authcode($code, 'DECODE', UC_KEY), $get);
            if(MAGIC_QUOTES_GPC) {
                $get = $this->dstripslashes($get);
            }
            if(time() - $get['time'] > 3600) {
                exit('Authracation has expiried');
            }
            if(empty($get)) {
                exit('Invalid Request');
            }
            $action = $get['action'];
            $timestamp = time();
            $method = 'action_'.$action;
            if(method_exists($this,$method)){
                $this->$method($get);
            }else{
                exit(API_RETURN_FAILED);
            }
        }
      function action_synlogin($get='')
      {}
}

 $system = new ucCore(array());
 $system->run();

}

现在我纠结的问题是,RUN()这个函数 执没行执行 action_synlogin()!!!

作者: zhwedo0822   发布时间: 2011-06-09

看不懂下面的这个代码:
  PHP code
   $action = $get['action'];
            $timestamp = time();
            $method = 'action_'.$action;//这个是什么意思?
            if(method_exists($this,$method)){
                $this->$method($get);
            }

部分能明白,$action 这个变量获取传过来的数据,method_exists这个在网上查了一下,是检查函数用的,那这个IF是执行所有前坠为"action_"的函数吗?

作者: zhwedo0822   发布时间: 2011-06-09

method_exists -- 检查类的方法是否存在

if(method_exists($this,$method)){
是检查用户所需的方法(由$get['action']提供)是否存在

作者: xuzuning   发布时间: 2011-06-09

请问,是不是这样
如果$get['action']里面有一个login的类,那么if(method_exists($this,$method)){
是不是就是检查 下面有没有一个action_login的这样一个类,如果有,结果为true,
这样执行IF里面的代码段,

作者: zhwedo0822   发布时间: 2011-06-09