V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
konakona
V2EX  ›  问与答

Laravel 4 与 Discuz X 通信并且共享当前 ucenter 在线用户的办法

  •  
  •   konakona · 2015 年 7 月 4 日 · 1464 次点击
    这是一个创建于 3935 天前的主题,其中的信息可能已经有所发展或是发生改变。
    -,- 正在做一个project,需要用laravel 4.2 实现Discuz X 论坛运营中一个子栏目的大块业务。

    但是问题来了...不造怎么获取Ucenter上当前已登录用户的办法..

    网上search出最靠谱的办法: http://www.oicqzone.com/pc/2014091819807.html

    在Laravel下罢工了...

    Discuz! System Error

    Oops! System file lost: class/touch\controller\discuz/touch\controller\discuz_core.php
    第 1 条附言  ·  2015 年 7 月 4 日
    阿婆主终于搞定了...现在公布下做法,希望帮助到其他小伙伴!

    因为框架的特殊性,和跨域的优势(因为好歹还在同一个域名下,我们不用再写其他的代码和接口来实现与UCENTER的远程通信),只需要从COOKIE下手即可,有迹可循的。

    hitnology_ucenter_members是会员表,hitnology_common_session是存储用户在线session的表。

    在index.php或任意discuz的文件里var_dump($_COOKIE)可以看到类似以下信息:

    [JEhO_2132_saltkey] => x8n**
    [JEhO_2132_lastvisit] => 14348**
    [JEhO_2132_auth] => 016****w4/iLFHQ0xox+pPqTmK***********************ByWfmaQ5/sCmarWJ4
    [_ga] => GA1.2.1***********1434893386
    [JEhO_2132_checkupgrade] => 1
    [JEhO_2132_lip] => 127.0.0.1,1435********92
    [JEhO_2132_ulastactivity] => f360RP9vbmkCtOkradNUveN7I8ih6m**************SHIwwcsXkyD
    [JEhO_2132_sid] => fK***6Z
    [sid] => 8d8ftepqYAUWu********************YRpzT%2FwYirX64O%2FaEwmMtFTJllE
    [JEhO_2132_connect_is_bind] => 0
    [Hm_lvt_bb2066f2862350c1a8c9354da2959d23] => 1434893386
    [Hm_lpvt_bb2066f2862350c1a8c9354da2959d23] => 1435993740
    [JEhO_2132_lastact] => 1435998297 portal.php


    (很多东西我用***打掉了~)

    JEhO_ 这个前缀是来源于config/config_global.php文件中$_config['cookie']['cookiepre']的值。其后的2132是discuz根据其他规定而生成的,其中$_COOKIE最重要的是JEhO_2132_sid的值,是hitnology_common_session里的=V= 用来确认是否在线的=V=

    ok,那么跨域就好了。

    比如我这个discuz的站是www.a.com ,然后我有一个子站是用laravel写的叫api.a.com。

    修改config/config_global.php中$_config['cookie']['cookiedomain'] = '你的主域名'; 举例:$_config['cookie']['cookiedomain'] = 'domain.me';

    =.= 哼哼哼哼...
    第 2 条附言  ·  2015 年 7 月 4 日
    -.- 忘了说,补充下...

    上面的都做完了你指需再用正则匹配到COOKIE就行了...然后去session表里进行匹配比较,是否在线,是否正确。

    你就可以当这个人在线了=V=
    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3093 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 14:38 · PVG 22:38 · LAX 07:38 · JFK 10:38
    ♥ Do have faith in what you're doing.