UC扩展解析文档_第1页
UC扩展解析文档_第2页
UC扩展解析文档_第3页
UC扩展解析文档_第4页
UC扩展解析文档_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ucenter 是康盛的一款用户中心功能 可以很方便的实现数个网站的用户注册登录短信息 下面就如何扩展 ucenter 功能进行一个讲解 我们的任务是要给 ucenter 的用户增加扩展 资料 长期以来 ucenter 中各个应用下的积分是各自为政 很不统一 比如说积分在各个程序中 都是独立的 我们要实现的功能是统一用户的积分 在某一个应用中修改了积分在别的应 用中同步修改积分和地址 你可以扩展到更多的字段 第一步在运行 ucenter 的数据库创建扩展表 这里建立的是 uc object 其中 uc 是安装 ucenter 时选择的数据表前缀 CREATE TABLE IF NOT EXISTS uc object uid mediumint 8 NOT NULL COMMENT 用户 ID username char 15 NOT NULL COMMENT 用户名 credit int 11 NOT NULL default 0 COMMENT 积分 addr varchar 255 NOT NULL default COMMENT 地址 PRIMARY KEY uid UNIQUE KEY username username ENGINE MyISAM DEFAULT CHARSET latin1 上面部分内容如果无法看到你可以去二次开发增加用户的扩展资料并实现同步功能 进行查 看 第二步扩展 uc client 这个地方比较重要是整个工作的基础 如果使用 mysql 链接的话那么只要修改 uc client php 就可以了 在 client php 下增加函数 function uc get object username isuid 0 type null data uc get user username isuid if dataintval isuid username username type type return UC CONNECT mysql return uc unserialize return function uc object set username isuid 0 filed null value null data uc get user username isuid if dataintval isuid username username filed filed value value return return 返回 11 分数不足 function uc object addint username isuid 0 filed null value null data uc get user username isuid if dataintval isuid username username filed filed value value return return 这里面的三个函数主要功能是 uc get object 是返回用户的扩展资料 第三个参数如果指定为扩展资料的某一项时则返回 数组 用户 ID 用户名 指定扩展项 否则返回数组 用户 ID 用户名 数据库中的所有扩展项 uc object set uc object addint 这两个函数是设置 增减用户扩展资料功能 其中 uc object addint 是专门针对 int 型扩展字段 如果这些扩展资料在应用中的数据库里也有 那么这些字段在设置和更新时要进行同步 而只要将返回的字符输出到页面就可以了 如 echo uc object set 1 1 credit 1 echo uc object set 1 1 addr 北京市 上面将同步各个应用中的积分 当然还是要修改每一个应用下面的 api uc php 改法附后 设置多个字段目前无法同步 因此 echo uc object set 1 1 array credit 1 addr 北 京市 是没有效果的 但是 ucenter 中会更新资料 应用程序可以找一个合适的时机自行 同步 uc object addint 中的 filed 不能为数组 value 为增加的值 如果为负就会减少减少用 户的指定扩展 int 型数据 uc object addint 1 1 credit 1 增加用户 1 分 uc object addint 1 1 credit 5 扣除 5 分 同样增加如果应用中有相应的字段那么也要进行同步 同步方法是 echo 同 uc object set uc object addint 中的 if in array filed array credit 里面可以增加更多 int 类型的字 段以便扩展你的功能 请根据需要进行增加 对于同步用户扩展的功能和从 uc 中取用户资料是差别同步是要同应用的 api uc php 进行 通讯 而且 uc client 是不知道其它应用的 authkey 但是 ucenter 知道 所以同步只能使用 ucenter 是知道所有的应用 authkey 看下面是两种区别 要求同步的必须使用远程 ucenter 中的方法 return call user func uc api post object add array isuid intval isuid username username filed filed value value return return 只取用户资料 一般语句如下 return call user func UC API FUNC object get array isuid intval isuid username username type type return UC CONNECT mysql return uc unserialize return 注意 call user func 中的第一个参数 第三步在 control 目录下创建 object php 内容如下 objectcontrol function objectcontrol parent construct this load object note client 仅在需要时初始化 this app this app this cache apps UC APPID note public 外部接口 function onget this init input isuid this input isuid username this input username type this input type return ENV object get object username isuid type 这个里面只包含一个方法就是取用户扩展资料 第四步在 model 目录下创建 object php 内容如下 objectmodel base function objectmodel this db base db function get object username isuid type null if type null type else type uid username type if isuid where username username else where uid username arr this db fetch first SELECT type FROM UC DBTABLEPRE object WHERE where return arr 这个里面只包含一个方法就是取用户扩展资料 经过以上的修改 uc client 部分就算完成了 已经成功了一半了 本作品版权属于顾留中 网站 本作品版权属于顾留中 网站 下面开始修改 ucenter 第五步在 ucenter 的根目录的 index php 中找到 if in array m array app frame user pm pm client tag feed friend domain credit mail version 改为 if in array m array app frame user pm pm client tag feed friend domain credit mail version object 主要是增加了 object 这样就可以对用户扩展资料进行 ucenter 方面的调用了 第六步在 control 目录下创建 object php 内容如下 objectcontrol function objectcontrol parent construct this load object this load user note public 外部接口 function onget this init input isuid this input isuid username this input username type this input type return ENV object get object username isuid type function onset this init input isuid this input isuid username this input username filed this input filed value this input value result ENV object set object username isuid filed value if resultget object username isuid filed synstr foreach this cache apps as appid app synstr time return synstr function onadd this init input isuid this input isuid username this input username filed this input filed value this input value result ENV object add username isuid filed value if resultget object username isuid filed synstr foreach this cache apps as appid app synstr time return synstr 请看 onset onadd 中有同步代码 你也可以作一定的修改比如说使用服务器进行同步 但 是这样可能会加重 ucenter 的负担 同步的本质就是请求上面的 script 中的 src 属性中的网 址 开发要点 注意 function objectcontrol parent construct this load object this load user 这里面的 this load user 是因为这里的需要 user 模块支持 同样你可以开发发来比如用户得分了短信息通知功能 只要增加 this load pm 这里就不示范了 调用模块的方法 ENV user xxx 看下面的第七步代码就有 本作品版权属于顾留中 网站 第七步在 model 目录下创建 object php 内容如下 objectmodel base function objectmodel this db base db function get object username isuid type null if type null type else type uid username type if isuid where username username else where uid username arr this db fetch first SELECT type FROM UC DBTABLEPRE object WHERE where return arr function set object username isuid filed value file put contents sql txt sqladd if isuid where username username else where uid username sqladd if is array filed foreach filed as k v sqladd k v elseif filed if this get object username isuid if is array filed foreach filed as k v sqladd k v this db query UPDATE UC DBTABLEPRE object SET substr sqladd 1 WHERE where file put contents update txt UPDATE UC DBTABLEPRE object SET substr sqladd 1 WHERE where return this db affected rows else if isuid status ENV user get user by username username else status ENV user get user by uid username if status uid status uid username status username this db query INSERT INTO UC DBTABLEPRE object SET username username uid uid sqladd return this db affected rows return arr function add username isuid filed value data this get object username isuid filed value if data this set object username isuid null null data this get object username isuid filed value if data filed valuedb query UPDATE UC DBTABLEPRE object SET sqladd WHERE where return this db affected rows 到此 ucenter 修改完成 下面就讲讲如何进行积分同步 这里只以 uchome 为例 其它自行修改或找本人付费修改 打开 uchome 下的 api uc php 查找 if in array get action array test deleteuser renameuser gettag synlogin synlogout updatepw updatebadwords updatehosts updateapps updateclient updatecredit getcredit getcreditsettings updatecreditsettings addfeed 修改为 if in array get action array test deleteuser renameuser gettag synlogin synlogout updatepw updatebadwords updatehosts updateapps updateclient updatecredit getcredit getcreditsettings updatecreditsettings addfeed synlobject 上面只是增加了 synlobject 在 note 的类中增加如下函数 function synlobject get post global SGLOBAL if intval get isuid uid intval get username else username get username print r get value get value filed get filed switch filed case credit if intval get isuid echo UPDATE tname space SET credit value WHERE uid uid SGLOBAL db query UPDATE tname space SET credit value WHERE uid uid else echo UPDATE tname space SET credit value WHERE username username SGLOBAL db query UPDATE tname space SET credit value WHERE username username default return API RETURN SUCCEED 本作品版权属于顾留中 网站 完整内容如下 3600 exit Authracation has expiried if empty get exit Invalid Request include once S ROOT uc client lib xml class php post xml unserialize file get contents php input if in array get action array test deleteuser renameuser gettag synlogin synlogout updatepw updatebadwords updatehosts updateapps updateclient updatecredit getcredit getcreditsettings updatecreditsettings addfeed synlobject uc note new uc note echo uc note get action get post exit else exit API RETURN FAILED class uc note var dbconfig var db var tablepre var appdir function serialize arr htmlon 0 if function exists xml serialize include once S ROOT uc client lib xml class php return xml serialize arr htmlon function uc note global SGLOBAL SC this appdir substr dirname FILE 0 3 this dbconfig S ROOT config php this db SGLOBAL db this tablepre SC tablepre function test get post return API RETURN SUCCEED function deleteuser get post global SGLOBAL if API DELETEUSER return API RETURN FORBIDDEN note 用户删除 API 接口 include once S ROOT source function delete php 获得用户 uids get ids query SGLOBAL db query SELECT uid FROM tname member WHERE uid IN uids while value SGLOBAL db fetch array query deletespace value uid 1 return API RETURN SUCCEED function renameuser get post global SGLOBAL if API RENAMEUSER return API RETURN FORBIDDEN 编辑用户 old username get oldusername new username get newusername SGLOBAL db query UPDATE tname member SET username new username WHERE username old username SGLOBAL db query UPDATE tname thread SET username new username WHERE username old username SGLOBAL db query UPDATE tname tagspace SET username new username WHERE username old username SGLOBAL db query UPDATE tname space SET username new username WHERE username old username SGLOBAL db query UPDATE tname session SET username new username WHERE username old username SGLOBAL db query UPDATE tname post SET username new username WHERE username old username SGLOBAL db query UPDATE tname poke SET fromusername new username WHERE fromusername old username SGLOBAL db query UPDATE tname notification SET author new username WHERE author old username SGLOBAL db query UPDATE tname friend SET fusername new username WHERE fusername old username SGLOBAL db query UPDATE tname feed SET username new username WHERE username old username SGLOBAL db query UPDATE tname doing SET username new username WHERE username old username SGLOBAL db query UPDATE tname comment SET author new username WHERE author old username SGLOBAL db query UPDATE tname blog SET username new username WHERE username old username SGLOBAL db query UPDATE tname album SET username new username WHERE username old username SGLOBAL db query UPDATE tname share SET username new username WHERE username old username SGLOBAL db query UPDATE tname poll SET username new username WHERE username old username SGLOBAL db query UPDATE tname event SET username new username WHERE username old username return API RETURN SUCCEED function gettag get post global SGLOBAL if API GETTAG return API RETURN FORBIDDEN name trim get id if empty name preg match x7f xff w name strlen name 20 return API RETURN FAILED tag SGLOBAL db fetch array SGLOBAL db query SELECT FROM tname tag WHERE tagname name if tag closed return API RETURN FAILED PHP SELF SERVER PHP SELF SERVER PHP SELF SERVER SCRIPT NAME siteurl http SERVER HTTP HOST preg replace api i substr PHP SELF 0 strrpos PHP SELF query SGLOBAL db query SELECT b FROM tname tagblog tb tname blog b WHERE b blogid tb blogid AND tb tagid tag tagid AND b friend 0 ORDER BY b dateline DESC LIMIT 0 10 bloglist array while value SGLOBAL db fetch array query bloglist array subject value subject uid value uid username value username dateline value dateline url siteurl space php uid value uid return array name bloglist return this serialize return 1 function synlogin get post global SGLOBAL if API SYNLOGIN return API RETURN FORBIDDEN note 同步登录 API 接口 obclean header P3P CP CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR cookietime 31536000 uid intval get uid query SGLOBAL db query SELECT uid username password FROM tname member WHERE uid uid if member SGLOBAL db fetch array query include once S ROOT source function space php member saddslashes member space insertsession member 设置 cookie ssetcookie auth authcode member password t member uid ENCODE cookietime ssetcookie loginuser get username cookietime function synlogout get post global SGLOBAL if API SYNLOGOUT return API RETURN FORBIDDEN note 同步登出 API 接口 obclean header P3P CP CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR clearcookie function updatepw get post global SGLOBAL if API UPDATEPW return API RETURN FORBIDDEN username get username newpw md5 time rand 100000 999999 SGLOBAL db query UPDATE tname member SET password newpw WHERE username username return API RETURN SUCCEED function updatebadwords get post global SGLOBAL if API UPDATEBADWORDS return API RETURN FORBIDDEN data array if is array post foreach post as k v data findpattern k v findpattern data replace k v replacement cachefile S ROOT uc client data cache badwords php fp fopen cachefile w s php r n s CACHE badwords var export data TRUE r n fwrite fp s fclose fp return API RETURN SUCCEED function updatehosts get post global SGLOBAL if API UPDATEHOSTS return API RETURN FORBIDDEN cachefile S ROOT uc client data cache hosts php fp fopen cachefile w s php r n s CACHE hosts var export post TRUE r n fwrite fp s fclose fp return API RETURN SUCCEED function updateapps get post global SGLOBAL if API UPDATEAPPS return API RETURN FORBIDDEN UC API if post UC API UC API post UC API unset post UC API cachefile S ROOT uc client data cache apps php fp fopen cachefile w s substr configfile 0 2 configfile configfil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论