吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6134|回复: 0
打印 上一主题 下一主题

通过ucenter整合不同编码dedecms和论坛的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2015-10-31 08:40:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

今天模板遇到一个客户是要整合dedecms和论坛,但是发现dedecms和论坛和uc的编码却不是一样的,我以DEDECMS5.6 UTF8  与UCENTER Gbk  和UCHOME GBK 为例。

先在后台安装DEDECMS5.6 UTF8 安装UCENTER 模块。

打开管理目录下的api_center.php

第一步:删除安装UC插件提示“uc服务端编码与DedeCMS编码不一致!要求您的uc服务端编码为:gbk编码.”并且对传递的网站名称,标签模板标记说明:UTF8转GBK

查找:



  • elseif($ucdbcharset != 'gbk')   
  •             {   
  •                 ShowMsg('uc服务端编码与DedeCMS编码不一致!要求您的uc服务端编码为:gbk编码.',-1);   
  •                 exit();   
  •             }   
  •             //标签应用模板   
  •             $app_tagtemplates = 'apptagtemplates[template]='.urlencode('<a href="{url}" target="_blank">{title}</a>').'&'.   
  •             'apptagtemplates[fields][title]='.urlencode('标题').'&'.   
  •             'apptagtemplates[fields][writer]='.urlencode('作者').'&'.   
  •             'apptagtemplates[fields][pubdate]='.urlencode('时间').'&'.   
  •             'apptagtemplates[fields][url]='.urlencode('地址');   
  •                
  •             $postdata = 'm=app&a=add&ucfounder=&ucfounderpw='.urlencode($uc_setings['authkey']).'&apptype=OTHER&appname='.urlencode($GLOBALS['cfg_webname']).'&appurl='.urlencode($GLOBALS['cfg_basehost']).'&appip=&appcharset=gbk&appdbcharset=gbk&'.$app_tagtemplates.'&release='.UC_CLIENT_RELEASE;  


修改为


  • //elseif($ucdbcharset != 'gbk')   
  •             //{   
  •             //  ShowMsg('uc服务端编码与DedeCMS编码不一致!要求您的uc服务端编码为:gbk编码.',-1);   
  •             //  exit();    
  •             //}   
  •             //标签应用模板   
  •             $app_tagtemplates = 'apptagtemplates[template]='.urlencode('<a href="{url}" target="_blank">{title}</a>').'&'.   
  •             'apptagtemplates[fields][title]='.urlencode(utf82gb('标题')).'&'.   
  •             'apptagtemplates[fields][writer]='.urlencode(utf82gb('作者')).'&'.   
  •             'apptagtemplates[fields][pubdate]='.urlencode(utf82gb('时间')).'&'.   
  •             'apptagtemplates[fields][url]='.urlencode(utf82gb('地址'));   
  •                
  •             $postdata = 'm=app&a=add&ucfounder=&ucfounderpw='.urlencode($uc_setings['authkey']).'&apptype=OTHER&appname='.urlencode(utf82gb($GLOBALS['cfg_webname'])).'&appurl='.urlencode($GLOBALS['cfg_basehost']).'&appip=&appcharset=gbk&appdbcharset=gbk&'.$app_tagtemplates.'&release='.UC_CLIENT_RELEASE;  


完成上面这一步就可以开始配置UCENTER模块了。

第二步:解决在UCENTER HOME GBK 或其他GBK 版本注册中文用户名在DEDECMS乱码问题。

打开api/uc.php

查找

  • function synlogin($get, $post)   
  •     {   
  •         $uid = $get['uid'];   
  •         $username = $get['username'];

修改为(对UC里的中文用户名从GBK转换成UTF8)


  • function synlogin($get, $post)   
  •     {   
  •         $uid = $get['uid'];   
  •         $username = gb2utf8($get['username']);  


这样可以解决中文用户名乱码的问题。但是还有一个很严重的问题。后台所有关于数据库方面的都乱码。

个人以为是每次使用API的时候。DEDECMS都延续了UCenter的MYSQL采用的编码。

所有我们要再每次API调用后再指定DEDECMS的采用的编码。


mysql_query("SET NAMES 'utf8'");

同步登陆同步登出相关最重要的是:include/memberlogin.class.php

打开它

查找


  • #api{{   
  •                 if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')   
  •                 {   
  •                     if($data = uc_get_user($this->fields['userid']))   
  •                     {   
  •                         if(uc_check_avatar($data[0]) && !strstr($this->fields['face'],UC_API))   
  •                         {   
  •                             $this->fields['face'] = UC_API.'/avatar.php?uid='.$data[0].'&size=middle';   
  •                             $dsql->ExecuteNoneQuery("UPDATE `dede_member` SET `face`='".$this->fields['face']."' WHERE `mid`='{$this->M_ID}'");   
  •                         }   
  •                     }   
  •                 }   
  •                 #/aip}}  

后面插入一行

mysql_query("SET NAMES 'utf8'");

这样就可以解决从UCenter接收的中文乱码。

还有就是文章推送,短消息同步在保存到UCENTER的时候就必须转换成GBK编码。并且在API结束后再把默认MSYQL编码转换回DEDECMS默认编码。

你可以全目录查找一下代码:


  • #api{{  


一般就是API调用开始。这个因为要修改的东西比较多。略过。高手应该可以举一反三。主要问题就解决了!


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-12-23 01:21 , Processed in 1.125000 second(s), 10 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表