konakona
V2EX  ›  问与答

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

  •  
  •   konakona · Jul 4, 2015 · 1541 views
    This topic created in 3992 days ago, the information mentioned may be changed or developed.
    -,- 正在做一个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
    Supplement 1  ·  Jul 4, 2015
    阿婆主终于搞定了...现在公布下做法,希望帮助到其他小伙伴!

    因为框架的特殊性,和跨域的优势(因为好歹还在同一个域名下,我们不用再写其他的代码和接口来实现与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';

    =.= 哼哼哼哼...
    Supplement 2  ·  Jul 4, 2015
    -.- 忘了说,补充下...

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

    你就可以当这个人在线了=V=
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3245 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 12:17 · PVG 20:17 · LAX 05:17 · JFK 08:17
    ♥ Do have faith in what you're doing.