菜单

精简版uc_client

2013年03月16日 - php

在应用需要整合ucenter时候需要用到 uc_client 目录,而往往我们并不需要那么多功能,那么有没有简单的方法呢?下面一个文件搞定ucenter 主要接口,包含,注册,登录,退出,同步登录相关接口。

 2,
 * 'uc_appkey' => '026fsDv7Oil9sdawt3b3vz1j7cvVQiYWIECUi4CmxlPgvnEZtO6svxwGmk4mimQ6YlDsgfLz9ke91j9PDrEUd3YR3nwYI+CCnTGk0W6dQzOytnuxvk4qYm5tLQ',
 * 'uc_url' => 'http://xiuno.com/dz7/uc_server/',
 * 'uc_charset' => 'UTF-8',
 * );
 * $s = uc_user_register('xxxa', 'xxxa', 'xxxa@gmail.com');
 * $arr = uc_user_login('xxxa', 'xxxa');
 * $arr = uc_get_user('xxxa');
 * $arr = uc_user_synlogin(1);
 * print_r($arr);
 * @param type $username
 * @param type $password
 * @return string
 */
function uc_user_login($username, $password) {
    $username = urlencode(uc_charset($username));
    $password = urlencode($password);
    if (strpos($username, '@') === FALSE) {
        $s = uc_http_request('user', 'login', "username=$username&password=$password&isuid=3"); // username
    } else {
        $s = uc_http_request('user', 'login', "username=$username&password=$password&isuid=2"); // email
    }
    if (strpos($s, 'Access denied for agent changed') !== FALSE) {
        return '可能 APPKEY 没有设置正确。';
    }
    $arr = uc_xml_to_array($s);
    if (is_array($arr)) {
        return array(
            'status' => $arr[0],
            'username' => uc_charset($arr[1], 0),
            'password' => $arr[2],
            'email' => $arr[3],
            'merge' => $arr[4]
        );
    } else {
        return $arr;
    }
}
//ucenter 返回:
//  
//  
//  
//  
//  
//  
//
//  正则替换后返回:
//  Array
//  (
//  [0] => 4
//  [1] => abcde
//  [2] => abcde@gmail.com
//  )
function uc_xml_to_array($s) {
    if (strpos($s, '') !== FALSE) {
        preg_match_all('##is', $s, $m);
        if (!empty($m[1])) {
            foreach ($m[1] as $k => $v) {
                $arr[$v] = $m[2][$k];
            }
            return $arr;
        }
    }
    return $s;
}
//同步登录:
//  返回一个数组,包含其他应用的 js 路径,格式大致如:
//  array (
//  0 => 'http://www.domain1.com/api/uc.php?auth=xxxxxx&action=rsynlogin',
//  1 => 'http://www.domain2.com/api/uc.php?auth=xxxxxx&action=rsynlogin',
//  2 => 'http://www.domain3.com/api/uc.php?auth=xxxxxx&action=rsynlogin',
//  )
//  接收到后  放入HTML页面,使其发送HTTP请求,完成其他应用的 cookie 设置,实现同步登录。同步退出同理。
function uc_user_synlogin($uid) {
    $s = uc_http_request('user', 'synlogin', "uid=$uid");
    preg_match_all('#