存档

作者存档

解决 Ecshop 2.7.2 与 Discuz! X2 的同步退出问题

2011年12月16日 5 条评论

最近一个项目需要整合 Ecshop 和 Discuz。整合过程很简单,最新版的 Discuz! X2 已经自带了 uc_server 和 uc_client。由于主目录是 Ecshop,Discuz 放在 bbs 目录下,为了减少垃圾文件,我全局修改了 Ecshop 里关于 uc_client 的调用路径,改成了 discuz 里自带的,这样两个程序就共用一个 uc_client。

全部设置成接口调用方式后测试发现,两边登陆都可以同步登陆到另一程序上,但退出则无法实现同步登陆。顺着 Ecshop 的退出流程,顺藤摸瓜找到了 lib_common.php 文件中的 uc_call 这个方法。这个方法的第二个参数 $params 的默认值是 null。而 Ecshop 注销时只传了调用 uc_client 中同步退出方法名做为一个参数的值,第二个参数使用的是默认值。而这个方法中通过 call_user_func_array($func, $params); 来调用对应的方法,问题就在这,第二个 $params 参数如果是 null 则 call_user_func_array 执行失败。解决办法很简单,修改 Ecshop 里 lib_common.php 中 function uc_call($func, $params=null) 这一行改成 function uc_call($func, $params=array()) 即可。

分类: PHP 标签:

PHP Socket 范例

2011年10月13日 没有评论

Server.php 代码

<?php
header(“Content-type: text/html; charset=utf-8”);
//确保在连接客户端时不会超时
set_time_limit(0);

//设置IP和端口号
$address = ‘127.0.0.1’;
$port = 8080;

//创建一个SOCKET
if(($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0){
   echo “socket_create() 失败的原因是:” . socket_strerror($sock) . “<br>”;
}

//绑定到socket端口
if(($ret = socket_bind($sock, $address, $port)) < 0){
   echo “socket_bind() 失败的原因是:” . socket_strerror($ret) . “<br>”;
}

//开始监听
if(($ret = socket_listen($sock, 4)) < 0){
   echo “socket_listen() 失败的原因是:” . socket_strerror($ret) . “<br>”;
}

$buf = ”;

do{
   if(($msgsock = socket_accept($sock)) < 0){
      echo “socket_accept() failed: reason: ” . socket_strerror($msgsock) . “\n”;
      break;
   }
   
   $msg = “<font color=red>欢迎进入服务器!</font>”;
   socket_write($msgsock, $msg, strlen($msg));

   echo “读取客户端发来的信息<br>”;
   $buf = socket_read($msgsock, 8192);

   echo $talkback = “收到的信息:$buf<br>”;
   
   if(socket_write($msgsock, “信息接收成功”, strlen(“信息接收成功”)) < 0){
      echo “socket_write() failed: reason: ” . socket_strerror($msgsock) . “\n”;
   }else{
      echo “反馈客户端成功”;
   }
   
   socket_close($msgsock);
}while(!$buf);

socket_close($sock);
?>

阅读全文…

分类: Day After Day 标签: ,

怀念家驹

2011年6月30日 没有评论

相信跟我同为80年代上下的朋友们都熟悉黄家驹,哪怕你不是他的歌迷!从他不幸去世那天至今整整18载了,时间过的好快!

小时候是个乖乖仔,家里有个录放机一直都是给放些少儿歌。初中的时候偶然的机会从一个女同学那里借了一盘宝丽金的金曲合集,回家听过后就特喜欢里面的那首《真的爱你》,后来同学告诉我说这首歌是 Beyond 唱的并帮我从城里买了一盘 Beyond 的专辑。这一听就一发不可收拾了,疯狂的收集 Beyond 的磁带(全是盗版的,没办法,那时候 CD 对我来说是可望不可及的奢侈品)。那时候没有网络,所有 Beyond 的消息都来自各种磁带里附带的信息,慢慢的知道我最喜欢的主唱早三年前已经过世,慢慢知道了 Beyond 的成长历程,知道了很多歌背后的故事……渐渐的,Beyond 成了我学习之余的全部

至今我主要还是听 Beyond 的歌,无论换了什么手机,里面都雷打不动的保存着 Beyond 所发表的所有专辑的 MP3。这些常会触动到心弦歌,伴我闯过了一段又一段迷茫和艰难的人生之路,现在已不是当年那个听了歌就冲动的要去学吉他的少年了。听着这些歌比以往少了些许激情,却多了一份感动,一份怀念……

文笔不好,不太会表达内心的感受,忘诸位 Beyond 同好见谅。

Beyond 不死,精神永存

分类: Day After Day 标签:

windows 下 gVim 的中文utf8支持

2010年12月26日 6 条评论

做开发养成的习惯,编码一贯用 utf8 格式。以前一直没事,最近在 windows 下装了 gVim 准备好好练练快捷键发现 gVim 打开 UTF8 编码的文件中文都是乱码。网上搜了一下修改了 vim 的配置文件 _vimrc 解决了这个小问题,把下面这段配置代码插入到 _vimrc 最前端就可以了。

if has(“gui_running”)
    set encoding=utf-8
    set fileencodings=utf-8,chinese,latin-1

    if has(“win32”)
        set fileencoding=chinese
    else
        set fileencoding=utf-8
    endif

    let &termencoding=&encoding

    source $VIMRUNTIME/delmenu.vim
    source $VIMRUNTIME/menu.vim

    language messages zh_CN.utf-8
endif

分类: L.A.M.P 标签: