注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

唐老鸭的博客

太多的不如意让我们学会了抱怨,却忘记怎么去努力改变现状.

 
 
 

日志

 
 
 
 

引用 Ucenter通信原理总结  

2010-02-25 11:26:09|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

引用

oyooUcenter通信原理总结

Ucenter通信原理总结 - oyoo - hnbk 开发手记

PHP代码

  1. //config.inc.php 在UCenter管理中心添加应用后自动生成(配置信息)  
  2. define('UC_CONNECT', 'mysql');//与UC的通信方式  
  3. define('UC_DBHOST', 'localhost');##  
  4. define('UC_DBUSER', 'root');##  
  5. define('UC_DBPW', '');##  
  6. define('UC_DBNAME', 'ucenter');##  
  7. define('UC_DBCHARSET', 'utf8');##  
  8. define('UC_DBTABLEPRE', '`ucenter`.uc_');// 数据表前缀  
  9. define('UC_DBCONNECT', '0');  
  10. define('UC_KEY', 'abc');// 通信所用的密钥(APIKEY)  
  11. define('UC_API', 'http://localhost/comsenz/uc');// UC地址  
  12. define('UC_CHARSET', 'utf-8');// 编码  
  13. define('UC_IP', '');// UC服务器IP  
  14. define('UC_APPID', '1');// 应用编号  
  15. define('UC_PPP', '20');##  

PHP代码

  1. // 处理登陆  
  2. function uc_user_login($username, $password, $isuid = 0, $checkques = 0, $questionid = '', $answer = '') {  
  3.         $isuid = intval($isuid);  
  4.     $data = array(  
  5.         'username'=>$username,  
  6.         'password'=>$password,  
  7.         'isuid'=>$isuid,  
  8.         'checkques'=>$checkques,  
  9.         'questionid'=>$questionid,  
  10.         'answer'=>$answer);  
  11.         $return = call_user_func(UC_API_FUNC, 'user', 'login', $data);  
  12.         return UC_CONNECT == 'mysql' ? $return : uc_unserialize($return);  
  13. }  

PHP代码

  1. // UC_API_FUNC是这样定义的  
  2. define('UC_API_FUNC', UC_CONNECT == 'mysql' ? 'uc_api_mysql' : 'uc_api_post');  

 

 

PHP代码

  1. // uc_api_post - 模拟浏览器访问  
  2. function uc_api_post($module, $action, $arg = array()) {  
  3.         $s = $sep = '';  
  4.         foreach($arg as $k => $v) {  
  5.                 $k = urlencode($k);  
  6.                 if(is_array($v)) {  
  7.                         $s2 = $sep2 = '';  
  8.                         foreach($v as $k2 => $v2) {  
  9.                                 $k2 = urlencode($k2);  
  10.                                 $s2 .= "$sep2{$k}[$k2]=".urlencode(uc_stripslashes($v2));  
  11.                                 $sep2 = '&';  
  12.                         }  
  13.                         $s .= $sep.$s2;  
  14.                 } else {  
  15.                         $s .= "$sep$k=".urlencode(uc_stripslashes($v));  
  16.                 }  
  17.                 $sep = '&';  
  18.         }  
  19.         $postdata = uc_api_requestdata($module, $action, $s);  
  20.         return uc_fopen2(UC_API.'/index.php', 500000, $postdata, '', TRUE, UC_IP, 20);  
  21. }  

PHP代码

  1. //uc_fopen2 调用uc_fopen 模拟浏览器访问  
  2. function uc_fopen2($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {  
  3.         $__times__ = isset($_GET['__times__']) ? intval($_GET['__times__']) + 1 : 1;  
  4.         if($__times__ > 2) {  
  5.                 return '';  
  6.         }  
  7.         $url .= (strpos($url, '?') === FALSE ? '?' : '&')."__times__=$__times__";  
  8.         return uc_fopen($url, $limit, $post, $cookie, $bysocket, $ip, $timeout, $block);  
  9. }  

PHP代码

  1. // uc_fopen 使用 fsockopen 模拟浏览器访问  
  2. function uc_fopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE) {  
  3.         $return = '';  
  4.         $matches = parse_url($url);  
  5.         !isset($matches['host']) && $matches['host'] = '';  
  6.         !isset($matches['path']) && $matches['path'] = '';  
  7.         !isset($matches['query']) && $matches['query'] = '';  
  8.         !isset($matches['port']) && $matches['port'] = '';  
  9.         $host = $matches['host'];  
  10.         $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';  
  11.         $port = !emptyempty($matches['port']) ? $matches['port'] : 80;  
  12.         if($post) {  
  13.                 $out = "POST $path HTTP/1.0";  
  14.                 $out .= "Accept: */*";  
  15.                 //$out .= "Referer: $boardurl";  
  16.                 $out .= "Accept-Language: zh-cn";  
  17.                 $out .= "Content-Type: application/x-www-form-urlencoded";  
  18.                 $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]";  
  19.                 $out .= "Host: $host";  
  20.                 $out .= 'Content-Length: '.strlen($post)."";  
  21.                 $out .= "Connection: Close";  
  22.                 $out .= "Cache-Control: no-cache";  
  23.                 $out .= "Cookie: $cookie";  
  24.                 $out .= $post;  
  25.         } else {  
  26.                 $out = "GET $path HTTP/1.0";  
  27.                 $out .= "Accept: */*";  
  28.                 //$out .= "Referer: $boardurl";  
  29.                 $out .= "Accept-Language: zh-cn";  
  30.                 $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]";  
  31.                 $out .= "Host: $host";  
  32.                 $out .= "Connection: Close";  
  33.                 $out .= "Cookie: $cookie";  
  34.         }  
  35.         $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);  
  36.         if(!$fp) {  
  37.                 return '';  
  38.         } else {  
  39.                 stream_set_blocking($fp, $block);  
  40.                 stream_set_timeout($fp, $timeout);  
  41.                 @fwrite($fp, $out);  
  42.                 $status = stream_get_meta_data($fp);  
  43.                 if(!$status['timed_out']) {  
  44.                         while (!feof($fp)) {  
  45.                                 if(($header = @fgets($fp)) && ($header == "" ||  $header == "\n")) {  
  46.                                         break;  
  47.                                 }  
  48.                         }  
  49.   
  50.                         $stop = false;  
  51.                         while(!feof($fp) && !$stop) {  
  52.                                 $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));  
  53.                                 $return .= $data;  
  54.                                 if($limit) {  
  55.                                         $limit -= strlen($data);  
  56.                                         $stop = $limit <= 0;  
  57.                                 }  
  58.                         }  
  59.                 }  
  60.                 @fclose($fp);  
  61.                 return $return;  
  62.         }  
  63. }  

PHP代码

  1. // 同步登陆 P3P协议,不太懂只知道是用户保密协议。  
  2. function synlogin($get, $post) {  
  3.                 $uid = $get['uid'];  
  4.                 $username = $get['username'];  
  5.                 if(!API_SYNLOGIN) {  
  6.                         return API_RETURN_FORBIDDEN;  
  7.                 }  
  8.   
  9.                 require_once $this->appdir.'./forumdata/cache/cache_settings.php';  
  10.   
  11.                 $cookietime = 2592000;  
  12.                 $discuz_auth_key = md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']);  
  13.                 header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');  
  14.                 $uid = intval($uid);  
  15.                 $query = $this->db->query("SELECT username, uid, password, secques FROM ".$this->tablepre."members WHERE uid='$uid'");  
  16.                 if($member = $this->db->fetch_array($query)) {  
  17.                         _setcookie('sid', '', -86400 * 365);  
  18.                         _setcookie('cookietime', $cookietime, 31536000);  
  19.                         _setcookie('auth', _authcode("$member[password]\t$member[secques]\t$member[uid]", 'ENCODE', $discuz_auth_key), $cookietime);  
  20.                 } else {  
  21.                         _setcookie('cookietime', $cookietime, 31536000);  
  22.                         _setcookie('loginuser', $username, $cookietime);  
  23.                         _setcookie('activationauth', _authcode($username, 'ENCODE', $discuz_auth_key), $cookietime);  
  24.                 }  
  25. }  

 

  评论这张
 
阅读(695)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018