LifeType 中文開發論壇

開發 => 核心補強 => 主題作者是: sunsoft 於 六月 05, 2006, 03:40:03 下午



主題: 请教一个问题在其它程序中调用plog的session
作者: sunsoft六月 05, 2006, 03:40:03 下午
我现在想要做的事情是整合一个论坛,但用户系统不是用论坛里的用户信息,而是用plog里的信息,因为我之前的plog信息已经可以正常使用了。且有很多的用户。
意思是在进入论坛时判断plog是否已经登录,若已经登录,则判断论坛的cookie是否与plog的session的用户名相同,若不相同,则重新用session中的信息登录。若相同什么都不做。当然我的自动注册已经做好了。
现在的问题是只有先进入plog才可以得到session的相关信息,若直接进入论坛,session为空。
我的代码是
<?php
include_once( PLOG_CLASS_PATH."class/controller/blogcontroller.class.php" );
include_once( PLOG_CLASS_PATH."class/net/http/session/sessionmanager.class.php" );
include_once( PLOG_CLASS_PATH."class/dao/userinfo.class.php" );
include_once( PLOG_CLASS_PATH."class/dao/bloginfo.class.php" );
    ini_set("arg_seperator.output", "&amp;");
    ini_set("magic_quotes_runtime", 0 ); 
    SessionManager::init();
   $session = HttpVars::getSession();
   print_r($session);
?>
得到的结果是
Array ( [SessionInfo] => sessioninfo Object ( [_objId] => [log] => [_props] => Array ( ) ) )

但我想要得到的结果应该是
Array ( [SessionInfo] => sessioninfo Object ( [_objId] => [log] => [_props] => Array ( [blogId] => 5914 [Year] => 2006 [Month] => 06 [Day] => 5 ) ) )
我不知道我还差哪些模块没有调用,或者是还需要执行什么函数

上面的程序,若先进入plog再进入这一页是没有问题的。


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: sunsoft六月 06, 2006, 08:45:04 上午
为什么没有人回答啊。等着救命的呀。


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: lss六月 06, 2006, 08:52:30 上午
为什么没有人回答啊。等着救命的呀。

這代表:

1.有能力的人沒空回答你,請耐心等待。
2.沒能力的人不敢幫腔。
3.…(自己想,最好是不要有這種啦)

你等著救命,這裡的很多人也忙著救自己的命。若你真的很趕,也許尋求付費服務也是一個途徑。

lss


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: markwu六月 06, 2006, 09:44:38 上午
這裡有兩種狀況:

1. plog_session 已經存在,你當然是直接調用
2. plog_session 不存在,你必須產生 plog_session,然後才可以調用

產生 session 的方式,請參考:http://forum.lifetype.org.tw/index.php?topic=1109.0

Mark


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: sunsoft六月 06, 2006, 10:52:36 上午
呵呵,已经解决。
现有我把我的最简化代码给出。
程式碼:
if (!defined( "PLOG_CLASS_PATH" )) {
define( "PLOG_CLASS_PATH", dirname(__FILE__)."/../");
}

include_once( PLOG_CLASS_PATH."class/controller/blogcontroller.class.php" );
include_once( PLOG_CLASS_PATH."class/net/http/session/sessionmanager.class.php" );
include_once( PLOG_CLASS_PATH."class/dao/userinfo.class.php" );

include_once( PLOG_CLASS_PATH."class/dao/bloginfo.class.php" );
include_once( PLOG_CLASS_PATH."class/plugin/pluginmanager.class.php" );
ini_set("arg_seperator.output", "&");
ini_set("magic_quotes_runtime", 0 );
SessionManager::init();
if (!$blogs)
$blogs=new BlogAction (0,HttpVars::getRequest());
$blogs->saveSession();
$session = HttpVars::getSession();
print_r($session);


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: sunsoft六月 06, 2006, 10:53:34 上午
算了,我再开个,版猪帮我加精吧。


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: markwu六月 06, 2006, 12:22:10 下午
不行。這麼做是不對的!

BlogAction 中所 initial 的 session,裡面的 userInfo 與 blogInfo 是 "Default" Blog 的資料並非你這個用戶或是 blog 的資料。

所以如果你用這個方式 initial,取出來的資料是錯的!

你還是參考我給你的範例吧!

Mark


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: sunsoft六月 06, 2006, 12:36:55 下午
呵呵,我并不是要要这个用户的blog只是要这个域名对应的分站点的blogs信息而已


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: markwu六月 06, 2006, 12:41:09 下午
呵呵,我并不是要要这个用户的blog只是要这个域名对应的分站点的blogs信息而已

如果是這樣,那根本不需要 initial session.

你需要透過 Blog() 來取得 blogInfo 的資料,就可以拿到 blog 對應的站點。

引用
include_once( PLOG_CLASS_PATH."class/dao/blogs.class.php" );

$blogId=你要取出資料的 blogid;
$blogs = new Blogs()
$blogInfo = $blogs->getBlogInfo( $blogId);

Mark


主題: Re: 请教一个问题在其它程序中调用plog的session
作者: Tbreeze六月 06, 2006, 08:49:17 下午
嗯 还是这样好