亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

uc_client與ucenter通信原理

2024-08-30 19:06:54
字體:
供稿:網(wǎng)友

以用戶登錄為例介紹,其它注銷,改密碼,消息,頭像,好友均類同.

1.從用戶xxx在某一應(yīng)用程序的login.php,輸入用戶名,密碼講起。

先用uc_user_login函數(shù)到uc server驗證此用戶和密碼,如正確,則寫入session,寫入cookies,并更新應(yīng)用程序會員表中的登錄ip,登錄時間。用戶感覺不到這個過程。

2.然后通過uc_user_synlogin通知uc server 用戶xxx登錄成功,這個過程可能使用ajax,用戶感覺不到通知過程。

3.uc server收到這個消息后,馬上命令手下,把xxx登錄的消息,像令牌環(huán)一樣,發(fā)給所有愿意接收(后臺中那個是否開啟同步登錄)這個消息的其它應(yīng)用程序。其實就是帶參數(shù)訪問一下各應(yīng)用程序的uc.php,用戶感覺不到這個過程。

4.各應(yīng)用程序靠api下的uc.php來接收uc server發(fā)來的消息,并對uc server言聽計從,讓干什么就干什么?,F(xiàn)在,收到讓xxx用戶在你的程序中登錄的命令,馬上執(zhí)行。

并寫本應(yīng)用程序的session,并且使用p3p, 寫入相同域或不同域的cookies.   用戶感覺不到這個過程。

5.最后所有和uc整合的程序,xxx均登錄成功。用戶從www.test.com/bbs登錄后, 跳到www.test.com/news同樣顯示登錄。因為bbs 和news系統(tǒng)在后臺均已登錄。

6.應(yīng)用程序與uc server的會話結(jié)束。

得益于uc設(shè)計的精巧過程,整個過程,用戶完全感覺不到ucenter的存在.這是整合程序歷史上的創(chuàng)新。

以下為其中的一個例子:

Supesite的uc_client和ucenter登錄通信過程

1、登錄入口Index.php?action-login

  1. //系統(tǒng)頻道 
  2. if($_SGET['action'] != 'index') {      
  3. if(emptyempty($channels['menus'][$_SGET['action']]['upnameid']) && $channels['menus'][$_SGET['action']]['upnameid'] != 'news') { 
  4. $scriptfile = S_ROOT.'./'.$_SGET['action'].'.php'
  5. else { 
  6. $scriptfile = S_ROOT.'./news.php'
  7.      //echo   $scriptfile; 
  8. if(file_exists($scriptfile)) { 
  9. include_once($scriptfile); 
  10. exit(); 

登錄控制器:Login.php

登錄視圖:Site_login.html.php

提交登錄action:batch.login.php?action=login

2、登錄處理地址batch.login.php?action=login

include_once(S_ROOT.'./uc_client/client.php');

登錄操作及其中涉及到的一些函數(shù):

$password = $_POST['password'];

$username = $_POST['username'];

去ucenter進行遠程登錄驗證

$ucresult = uc_user_login($username, $password, $loginfield == 'uid');

如果登錄成功,則查本地用戶信息,如果有更新本地信息,如果沒有插入新的用戶數(shù)據(jù)保持與ucenter進行同步,然后同步其他子系統(tǒng)登錄信息:

  1. $msg = $lang['login_succeed'].uc_user_synlogin($members['uid']); 
  2.  
  3. function uc_user_synlogin($uid) { 
  4. $uid = intval($uid); 
  5. $return = uc_api_post('user''synlogin'array('uid'=>$uid)); 
  6. return $return
  7.  
  8.  
  9. function uc_api_post($module$action$arg = array()) { 
  10. $s = $sep = ''
  11. foreach($arg as $k => $v) { 
  12. $k = urlencode($k); 
  13. if(is_array($v)) { 
  14. $s2 = $sep2 = ''
  15. foreach($v as $k2 => $v2) { 
  16. $k2 = urlencode($k2); 
  17. $s2 .= "$sep2{$k}[$k2]=".urlencode(uc_stripslashes($v2)); 
  18. $sep2 = '&'
  19. $s .= $sep.$s2
  20. else { 
  21. $s .= "$sep$k=".urlencode(uc_stripslashes($v)); 
  22. $sep = '&'
  23. $postdata = uc_api_requestdata($module$action$s); 
  24.  
  25. return uc_fopen2(UC_API.'/index.php', 500000, $postdata'', TRUE, UC_IP, 20); 
  26.  
  27.  
  28. function uc_api_requestdata($module$action$arg=''$extra='') { 
  29. $input = uc_api_input($arg); 
  30. $post = "m=$module&a=$action&inajax=2&release=".UC_CLIENT_RELEASE."&input=$input&appid=".UC_APPID.$extra
  31. return $post
  32.  
  33. function uc_api_url($module$action$arg=''$extra='') { 
  34. $url = UC_API.'/index.php?'.uc_api_requestdata($module$action$arg$extra); 
  35. return $url
  36.  
  37. function uc_api_input($data) { 
  38. $s = urlencode(uc_authcode($data.'&agent='.md5($_SERVER['HTTP_USER_AGENT'])."&time=".time(), 'ENCODE', UC_KEY)); 
  39. return $s
  40.  
  41.  
  42. function uc_fopen2($url$limit = 0, $post = ''$cookie = ''$bysocket = FALSE, $ip = ''$timeout = 15, $block = TRUE) { 
  43. $__times__ = isset($_GET['__times__']) ? intval($_GET['__times__']) + 1 : 1; 
  44. if($__times__ > 2) { 
  45. return ''
  46. $url .= (strpos($url'?') === FALSE ? '?' : '&')."__times__=$__times__"
  47. return uc_fopen($url$limit$post$cookie$bysocket$ip$timeout$block); 
  48.  
  49. function uc_fopen($url$limit = 0, $post = ''$cookie = ''$bysocket = FALSE, $ip = ''$timeout = 15, $block = TRUE) { 
  50. $return = ''
  51. $matches = parse_url($url); 
  52. !isset($matches['host']) && $matches['host'] = ''
  53. !isset($matches['path']) && $matches['path'] = ''
  54. !isset($matches['query']) && $matches['query'] = ''
  55. !isset($matches['port']) && $matches['port'] = ''
  56. $host = $matches['host']; 
  57. $path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/'
  58. $port = !emptyempty($matches['port']) ? $matches['port'] : 80; 
  59. if($post) { 
  60. $out = "POST $path HTTP/1.0/r/n"
  61. $out .= "Accept: **/r/n"
  62. //$out .= "Referer: $boardurl/r/n"; 
  63. $out .= "Accept-Language: zh-cn/r/n"
  64. $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]/r/n"
  65. $out .= "Host: $host/r/n"
  66. $out .= "Connection: Close/r/n"
  67. $out .= "Cookie: $cookie/r/n/r/n"
  68. $fp = @fsockopen(($ip ? $ip : $host), $port$errno$errstr$timeout); 
  69. if(!$fp) { 
  70. return '';//note $errstr : $errno /r/n 
  71. else { 
  72. stream_set_blocking($fp$block); 
  73. stream_set_timeout($fp$timeout); 
  74. @fwrite($fp$out); 
  75. $status = stream_get_meta_data($fp); 
  76. if(!$status['timed_out']) { 
  77. while (!feof($fp)) { 
  78. if(($header = @fgets($fp)) && ($header == "/r/n" ||   $header == "/n")) { 
  79. break
  80.  
  81. $stop = false; 
  82. while(!feof($fp) && !$stop) { 
  83. $data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit)); 
  84. $return .= $data
  85. if($limit) { 
  86. $limit -= strlen($data); 
  87. $stop = $limit <= 0; 
  88. @fclose($fp); 
  89. return $return

遠程同步登錄子系統(tǒng)操作之后:

  1. //顯示信息 
  2. function showmessage($message$url_forward=''$second=3, $vars=array()) { 
  3. global $_SGLOBAL$_SCONFIG$_SC$channels
  4.  
  5. if(emptyempty($_SGLOBAL['inajax']) && $url_forward && emptyempty($second)) { 
  6. //直接301跳轉(zhuǎn) 
  7. obclean(); 
  8. header("HTTP/1.1 301 Moved Permanently"); 
  9. header("Location: $url_forward"); 
  10. else { 
  11. if(!defined('IN_SUPESITE_ADMINCP')) { 
  12. $tpl_file = 'showmessage'
  13. $fullpath = 0; 
  14. include_once(S_ROOT.'./language/message.lang.php'); 
  15. if(!emptyempty($mlang[$message])) $message = $mlang[$message]; 
  16. else { 
  17. $tpl_file = 'admin/tpl/showmessage.htm'
  18. $fullpath = 1; 
  19. include_once(S_ROOT.'./language/admincp_message.lang.php'); 
  20. if(!emptyempty($amlang[$message])) $message = $amlang[$message]; 
  21.  
  22. if(isset($_SGLOBAL['mlang'][$message])) $message = $_SGLOBAL['mlang'][$message]; 
  23. foreach ($vars as $key => $val) { 
  24. $message = str_replace('{'.$key.'}'$val$message); 
  25. //顯示 
  26. obclean(); 
  27. if(!emptyempty($url_forward)) { 
  28. $second = $second * 1000; 
  29. $message .= "<script>setTimeout(/"window.location.href ='$url_forward';/", $second);</script><ajaxok>"
  30.  
  31. include template($tpl_file$fullpath); 
  32. ob_out(); 
  33. exit(); 

Supesite中的Common.php部分解讀:

1、define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);

dirname(__FILE__)

S_ROOT=E:/mydoc/supesite

2、error_reporting指令確定PHP錯誤報告敏感度的級別,一共有十三個預(yù)定的錯誤級別,每一個都唯一對應(yīng)于應(yīng)用程序或服務(wù)器功能。

D_BUG?error_reporting(7):error_reporting(E_ERROR);

1 E_ERROR 

2 E_WARNING 

4 E_PARSE 

8 E_NOTICE 

16 E_CORE_ERROR 

32 E_CORE_WARNING

3、$_SGLOBAL = $_SBLOCK   = $_SCONFIG = $_SHTML = $_DCACHE = $_SGET = array();

4、//基本文件

  1. if(!@include_once(S_ROOT.'./config.php')) { 
  2. header("Location: install/index.php");//安裝 
  3. exit(); 
  4. include_once(S_ROOT.'./function/common.func.php'); 
  5. @include_once(S_ROOT.'./data/system/config.cache.php'); 

5、PHP extract() 函數(shù)從數(shù)組中把變量導(dǎo)入到當前的符號表中。

$_SCONFIG = array_merge($_SSCONFIG, $_SC);//合并配置

extract($_SC);

6、函數(shù):get_magic_quotes_gpc()

取得 PHP 環(huán)境變量 magic_quotes_gpc 的值。

語法: long get_magic_quotes_gpc(void);

返回值: 長整數(shù)

函數(shù)種類: PHP 系統(tǒng)功能

本函數(shù)取得 PHP 環(huán)境配置的變量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示關(guān)閉本功能;返回 1 表示本功能打開。當 magic_quotes_gpc 打開時,所有的 ' (單引號), " (雙引號), / (反斜線) and 空字符會自動轉(zhuǎn)為含有反斜線的溢出字符。

7、過濾’單引號

  1. function saddslashes($string) { 
  2. if(is_array($string)) { 
  3. foreach($string as $key => $val) { 
  4. $string[$key] = saddslashes($val); 
  5. else { 
  6. $string = addslashes($string); 
  7. return $string

addslashes()函數(shù)的作用是:使用反斜線引用字符串。

8、strlen()函數(shù)的作用:取字符串的長度

9、

  1. foreach($_COOKIE as $key => $val) { 
  2. if(substr($key, 0, $prelength) == $_SC['cookiepre']) { 
  3. $_SCOOKIE[(substr($key$prelength))] = emptyempty($magic_quote) ? saddslashes($val) : $val

10、getenv

取得系統(tǒng)的環(huán)境變量

語法: string getenv(string varname);

11、php strcasecmp()函數(shù)

strcasecmp()函數(shù)的作用是:對兩個字符串進行比較。

12、preg_match

13、ob_start 打開緩沖區(qū)

14、preg_replace執(zhí)行正則表達式的搜索和替換

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产丝袜在线精品| 成人污版视频| 97国产一区二区| 丁香花视频在线观看| 狂野欧美性猛交xxxx乱大交| 久久亚洲一区二区三区明星换脸| 国产精品天堂蜜av在线播放| 99riav视频一区二区| 欧美一级做性受免费大片免费| 欧美日韩电影一区二区| 一级在线观看视频| 国产精品蜜臀在线观看| 欧美高清在线一区| 国产一二三在线视频| 精品视频在线播放一区二区三区| 日韩 中文字幕| 一区二区视频免费| 欧洲成人一区二区三区| 国产在视频一区二区三区吞精| 亚洲色婷婷久久精品av蜜桃| 天堂在线一区二区三区| 大胆欧美熟妇xx| 国产在线网站| 欧美喷水一区二区| 国产玉足脚交久久欧美| 日韩美女一区二区三区| 女人裸体性做爰全过| 欧美日在线观看| 国产欧美日韩一区| 免费观看国产成人| 青青在线视频观看| 久久亚洲人体| 国产精品99久久久久久久久| 久久偷窥视频| 超碰成人av| 性鲍视频在线观看| 精品一区二区三区中文字幕视频| 91欧美日韩麻豆精品| 国产探花在线精品一区二区| 国产亲伦免费视频播放| 欧美丝袜美女中出在线| 亚洲成人一区在线观看| 女人又爽又黄免费女仆| 国产成人在线视频观看| 日本丰满少妇裸体自慰| 亚洲女人天堂| 伊人久久五月天| 波多野结衣乳巨码无在线观看| 欧在线一二三四区| 日韩欧美一区视频| 中文字幕在线1| 欧美a一级片| 少妇熟女视频一区二区三区| 国产一级在线视频| bbw丰满大肥奶肥婆| 国产精品美女久久久久久久| 91福利精品第一导航| 亚洲丝袜一区在线| 日韩美女视频网站| 国产成人精品久久亚洲高清不卡| 欧美视频三区在线播放| 欧美日韩国产中文精品字幕自在自线| 热re66久久精品国产99re| 无码人妻精品一区二区三区9厂| 欧美人妖巨大在线| 久久躁狠狠躁夜夜爽| 在线天堂www在线国语对白| 精品国模一区二区三区| ㊣最新国产の精品bt7086| 蜜臀av性久久久久蜜臀av| 九九热免费在线观看| 好看的日韩精品视频在线| www插插插无码视频网站| 日韩不卡一区二区三区| 中文字幕欧美精品日韩中文字幕| 国产在线观看欧美| 国产精品久久久久久久美男| 激情综合丁香五月| 亚洲国产欧美视频| 成人欧美一区二区三区黑人| 91av在线免费播放| 欧美综合在线第二页| 亚洲第一二区| 69精品无码成人久久久久久| 日韩无码精品一区二区| 欧洲亚洲国产日韩| 97偷自拍亚洲综合二区| 伊人一区二区三区| 四虎中文字幕| 日韩在线观看成人| 欧美一区二区三区久久精品茉莉花| 91午夜精品| 四虎影视2018在线播放alocalhost| 国产极品粉嫩福利姬萌白酱| china中国猛gary| 国产传媒欧美日韩| 国产探花在线精品| 777av视频| 色999日韩国产欧美一区二区| 久久久久久久蜜桃| 日韩小视频在线观看专区| 久久视频中文字幕| 亚洲精品白浆高清| 日本三级日本三级日本三级极| 欧美精品久久久久久久久老牛影院| 久久精品欧洲| 精品国产乱码久久久久久浪潮| 日本在线中文字幕一区| 日本一区二区中文字幕| 日本在线观看a| 青草av.久久免费一区| 青青视频在线免费观看| 亚洲精品黄网在线观看| 日本精品一二三区| 久久av网站| 99视频精品全部免费在线| 久久综合色婷婷| 九九久久久久午夜精选| 欧美第一页草草影院浮力| 蜜桃一区二区三区在线| 亚洲欧美自拍一区| 国产在线成人| 日韩中文字幕第一页| 热这里只有精品| 亚洲中文无码av在线| 亚洲人成777| 婷婷精品在线观看| 亚洲精品高清在线观看| 另类一区二区| av av片在线看| 亚洲欧美网站在线观看| 91精品在线观看国产| 欧美一级做a爰片免费视频| 精品国产乱码久久久久久果冻传媒| 国产麻豆剧传媒精品国产| 99热99热| 五月婷婷激情综合| 亚洲精品永久免费视频| 成人免费一区二区三区视频网站| 一本色道久久精品| 黄色片网站免费| 日韩有码在线电影| 欧美激情 亚洲a∨综合| 一本大道久久加勒比香蕉| 亚洲欧美一区二区三区四区五区| 欧美野外猛男的大粗鳮| 亚洲裸体xxxx| 黄免费在线观看| 欧美午夜一区二区三区免费大片| 免费国产在线精品一区二区三区| 日韩av中文字幕在线免费观看| 色老板在线视频| 日本视频在线观看一区二区三区| 一区二区三区欧美亚洲| 丁香婷婷自拍| 波多野结衣一二三四区| 91精品欧美综合在线观看最新| 欧美国产亚洲精品| 91高清视频在线免费观看| 99久久这里有精品| 国产亚洲一本大道中文在线| 日本一区二区三区视频在线观看| 精品午夜福利视频| 国产精品白嫩美女在线观看| 亚洲精品99999| 黄色在线资源| 性少妇bbw张开| 国产精品1区2区在线观看| 国产黄色免费观看| 免费成人av| 黄色资源网久久资源365| 精品久久五月天| 国产成人精品www牛牛影视| 亚洲成人av在线| 欧美日韩精品在线一区| 91精品国产高清自在线看超| 精品人伦一区二区三区蜜桃免费| 多野结衣av一区| 在线碰免费视频在线观看| 污污视频免费看| 国产精品视频你懂的| 精品无码一区二区三区的天堂| 欧美一区三区三区高中清蜜桃| 欧美亚洲一区| 亚洲最大福利网站| 你真棒插曲来救救我在线观看| 日韩欧美一区视频| 久久超碰97人人做人人爱| 日本精品一区二区在线观看| 911美女片黄在线观看游戏| 国产欧美日韩另类视频免费观看| 日本成人黄色网| **欧美日韩在线观看| 免费人成网ww777kkk手机| 影音先锋在线影院| 午夜精品一区在线观看| 国产黑丝在线视频| 久久中文字幕人妻| 一区二区精品国产| 激情五月播播久久久精品| 青青草国产成人av片免费| 日本精品人妻无码77777| 97se亚洲综合在线| 免费黄色片在线观看| 国产素人视频在线观看| 蜜桃传媒一区二区三区| 精品视频在线播放免| 亚洲国产精品t66y| 久久九九国产精品怡红院| 成年在线播放小视频| 午夜精品区一区二区三| 88av在线视频| 在线看片黄色| 久久国产主播精品| 国产女主播在线写真| 96精品视频| 成人综合国产精品| 福利片一区二区| 免费一级在线观看播放网址| 亚洲一区二区免费视频| 五月天激情丁香| 国产乱妇乱子在线播视频播放网站| 第一社区sis001原创亚洲| 亚洲激情综合| 久久久神马电影| 久久久久亚洲AV成人| 国产欧美日韩亚洲一区二区三区| 亚洲人一二三区| 无码人妻少妇色欲av一区二区| 欧美成人另类视频| 精品久久久久久久久久久久久久久久久| 国产精品亚洲欧美| 波多野结衣精品久久| 九九精品九九| 国产三线在线| 国产黄色一级电影| 精品xxxxxbbbb欧美中文| 国产精品欧美激情在线| 青青免费在线视频| 日韩亚洲国产精品| 国产人成亚洲第一网站在线播放| 国产精品中文字幕久久久| 影音先锋2020色资源网| 91蜜桃在线观看| 久久草视频在线| 国产精品对白一区二区三区| 天天影视综合| 精品国产乱码久久久久久虫虫漫画| 一区二区三区成人| 成人一区在线观看| 日本黄网站免费| 日韩色级片先锋影音| 成人性色生活片免费看爆迷你毛片| 日韩高清在线一区| 日韩aaaa| 在线看片你懂得| 女同久久另类99精品国产| 精品国产999| 日韩欧美精品在线不卡| 九九热线视频只有这里最精品| 免费看欧美黑人毛片| 国产乱子轮精品视频| 亚洲熟妇无码av在线播放| 成人福利在线看| 永久免费在线| 亚洲欧美卡通另类91av| 午夜性爽视频男人的天堂| 91亚洲国产成人精品一区二三| 日韩一区二区精品在线观看| 日本美女一区二区三区| 亚洲精品国产精品国自产| 久草免费在线视频观看| 1pondo在线播放免费| 国产偷人视频免费| 羞羞网站在线| 内射国产内射夫妻免费频道| 一级片视频网站| 亚洲第一二三四区| 久久超级碰视频| 欧美视频免费| 国产精品亚洲电影久久成人影院| 国产午夜精品无码| 日本在线观看免费视频| 精品人伦一区二区三电影| 日韩午夜激情免费电影| 99在线观看视频免费| 日本aⅴ大伊香蕉精品视频| 久久精品一区二区三区资源网| 午夜精品久久久久久久99水蜜桃| 成人在线国产精品| 国产mv免费观看入口亚洲| 精品一区二区三区免费视频| 男男一级淫片免费播放| 极品av少妇一区二区| www.黄色在线观看| 在线成人午夜影院| 欧美高清视频一区二区三区| 欧美69xxxx| 中文字幕乱码一区| 欧美日韩不卡| а√天堂中文在线资源bt在线| 亚洲精品免费播放| 色综合久久精品亚洲国产| 亚洲一级一级97网| 91精品在线一区二区| 国产精品99久久99久久久| 在线成人国产| 91在线资源站| 激情六月婷婷| 国产人成在线观看| 精品日韩99亚洲| 91专区在线观看| 中文字幕人妻一区二区在线视频| 欧美一区二区三区爽爽爽| 青青草自拍偷拍| 中文字幕色一区二区| 国产精品久久久久7777按摩| av片哪里在线观看| 国产91精品看黄网站在线观看| 国产精品天干天干在观线| 欧美黄色录像片| 在线视频福利一区| 国产99在线|中文| 国产精品麻豆久久| jizzjizz4| 日本一区二区三区dvd视频在线| 国产无遮挡又黄又爽在线观看| 国产精品成人一区二区|