zoukankan      html  css  js  c++  java
  • ucenter 单点登录,终极版

     
    一 ,discuz ecshop  两边登陆都可以同步登陆到另一程序上,但退出则无法实现同步登陆。顺着 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()) 即可。
     
    二,
       http://域名/ ecshop ,http://域名/bbs/ 为论坛dzX2, 那么,在ec登陆后,dzX2 点退出, 
    会发送一个javascript申请到 /api/uc.php的 logout请求 ( 如果setcookie 只是在 /bbs/ 下 设置cookie 为空,那么就清空不了cookie 
    严格的应该是 
    setcookie('ECS[user_id]', '', $time,$GLOBALS['cookie_path'], $GLOBALS['cookie_domain']); 
    ecshop  文件 /api/uc.php 搜索 set_cookie
    1. if (empty($user_id))
    2.     {
    3.         /* 摧毁cookie */
    4.         $time = time() - 3600;
    5.         setcookie('ECS[user_id]',  '', $time); 这里要改
    6.         setcookie('ECS[username]', '', $time);这里要改
    7.         setcookie('ECS[email]',    '', $time);                 这里要改
    8.     }
    9.     else
    10.     {
    11.         /* 设置cookie */
    12.         $time = time() + 3600 * 24 * 30;
    13.         setcookie("ECS[user_id]",  $user_id,   $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
    14.         setcookie("ECS[username]", $user_name, $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
    15.         setcookie("ECS[email]",    $email,     $time, $GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
    16.     }
    复制代码
    将上面要改的 改为
    1. setcookie('ECS[user_id]', '', $time,$GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
    2.                 setcookie('ECS[username]', '', $time,$GLOBALS['cookie_path'], $GLOBALS['cookie_domain']); 
    3.                 setcookie('ECS[email]', '', $time,$GLOBALS['cookie_path'], $GLOBALS['cookie_domain']);
     
     
     
    其中在本地windows环境中,需要在config.php中配置cookie作用域(path)
  • 相关阅读:
    zoj 3644 Kitty's Game
    Planets
    hdoj 2571 命运
    (理论篇)IOC概述和Unity的使用
    重温设计模式之单例模式
    重温设计模式之观察者
    重温设计模式之装饰者
    (理论篇)PetShop全概述
    (理论篇)petshop中缓存运用之我见
    (理论篇)cookie,session,viewstate,cache
  • 原文地址:https://www.cnblogs.com/phpworld/p/3760632.html
Copyright © 2011-2022 走看看