得到这段代码之后,是怎么去运用的呢?又是在什么时候执行呢? 下面我们查看:(由于情况比较多,拿特殊情况来分析)
showmessage('login_succeed', $referer ? $referer : './', $param, array('showdialog' => 1, 'locationtime' => true, 'extrajs' => $ucsynlogin));
当用户登录成功,请在跳转的过程中,将会执行这段代码 这里的js关键是code部分,下面我们进入 接口部门假设应用的接口为: uc.php
- $code = @$_GET['code'];
- parse_str(authcode($code, 'DECODE', UC_KEY), $get);
- if(time() - $get['time'] > 3600) {
- exit('Authracation has expiried');
- }
将code解密,如果解密错误(请检查uc的密钥是否正确)。可以将得到的$get输出。调试方法:由于程序是用js在加载php文件所以直接断开输出是不会看到结果。可以将得到的结果输入到文件查看:
$get = var_export($get,true);
file_put_contents('test.txt',$get);
这样我们就能清楚的查看到code部分到底传入了什么
查看代码:
- if(in_array($get['action'], array('test', 'deleteuser', 'renameuser', 'gettag', 'synlogin', 'synlogout',
'updatepw', 'updatebadwords', 'updatehosts', 'updateapps', 'updateclient', 'updatecredit', 'getcredit',
'getcreditsettings', 'updatecreditsettings', 'addfeed'))) {- $uc_note = new uc_note();
- echo $uc_note->$get['action']($get, $post);
- exit();
就不难发现,程序是怎么执行登录。
如果应用程序没有正常登录:
首先判断,在class_member.php中 $ucsynlogin 是否返回了对应的js,如果返回了
接下来,查看是否进入到接口且正确解析code。然后查看是否执行了登录操作
同步退出过程类似同步登录。这里不做说明