首頁
新聞
功能
下載
開發
支援
論壇
文件
搜尋
關於我們
歡迎光臨,
訪客
. 請先
登入
或
註冊一個帳號
.
十一月 12, 2024, 04:28:11 下午
19595
文章 在
3865
主題 由
4579
會員
最新註冊會員:
aa123aa1
首頁
說明
搜尋
登入
註冊
LifeType 中文開發論壇
|
開發
|
外掛程式
|
外掛程式精華區
|
plog&vbb完全整合摸索过程
« 上篇主題
下篇主題 »
頁:
[
1
]
列印
作者
主題: plog&vbb完全整合摸索过程 (閱讀 100524 次)
laughtosky
新手見習
文章: 20
plog&vbb完全整合摸索过程
«
於:
九月 08, 2005, 05:21:03 下午 »
我也还在摸索中,所以只好做到那一步,就写到哪一步
因为对php很陌生,所以进度会非常慢
我计划用一个月的时间完成
中间肯定会遇到各种问题,希望各位高手指正
少说废话,直接进入正题
首先,整合user表
因为plog的表会自动加上前缀plog_
//将plog_数据表前缀去掉
ALTER TABLE `plog_article_categories_link` RENAME `article_categories_link` ;
ALTER TABLE `plog_articles` RENAME `articles` ;
ALTER TABLE `plog_articles_categories` RENAME `articles_categories` ;
ALTER TABLE `plog_articles_comments` RENAME `articles_comments` ;
ALTER TABLE `plog_articles_notifications` RENAME `articles_notifications` ;
ALTER TABLE `plog_articles_text` RENAME `articles_text` ;
ALTER TABLE `plog_bayesian_filter_info` RENAME `bayesian_filter_info` ;
ALTER TABLE `plog_bayesian_tokens` RENAME `bayesian_tokens` ;
ALTER TABLE `plog_blogs` RENAME `blogs` ;
ALTER TABLE `plog_config` RENAME `config` ;
ALTER TABLE `plog_custom_fields_definition` RENAME `custom_fields_definition` ;
ALTER TABLE `plog_custom_fields_values` RENAME `custom_fields_values` ;
ALTER TABLE `plog_filtered_content` RENAME `filtered_content` ;
ALTER TABLE `plog_gallery_albums` RENAME `gallery_albums` ;
ALTER TABLE `plog_gallery_resources` RENAME `gallery_resources` ;
ALTER TABLE `plog_host_blocking_rules` RENAME `host_blocking_rules` ;
ALTER TABLE `plog_mylinks` RENAME `mylinks` ;
ALTER TABLE `plog_mylinks_categories` RENAME `mylinks_categories` ;
ALTER TABLE `plog_myrecent` RENAME `myrecent` ;
ALTER TABLE `plog_myrecent_categories` RENAME `myrecent_categories` ;
ALTER TABLE `plog_permissions` RENAME `permissions` ;
ALTER TABLE `plog_referers` RENAME `referers` ;
ALTER TABLE `plog_trackbacks` RENAME `trackbacks` ;
ALTER TABLE `plog_users` RENAME `users` ;
ALTER TABLE `plog_users_permissions` RENAME `users_permissions` ;
已記錄
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #1 於:
九月 08, 2005, 05:23:34 下午 »
//将plog的user表的特殊字段加入到vbb中
ALTER TABLE `user`
ADD `full_name` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL AFTER `salt` ,
ADD `about` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci AFTER `full_name` ,
ADD `properties` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL AFTER `about` ,
ADD `status` INT( 4 ) DEFAULT '1' NOT NULL AFTER `properties` ,
ADD `resource_picture_id` INT( 10 ) DEFAULT '0' NOT NULL AFTER `status` ;
//修改plog中所有和user表有关的项目
class\dao\users.class.php(40): FROM $query = "SELECT * FROM ".$this->getPrefix()."users
class\dao\users.class.php(70): FROM {$prefix}users u LEFT JOIN {$prefix}users_permissions p ON u.id = p.user_id
class\dao\users.class.php(92): FROM {$prefix}users u LEFT JOIN {$prefix}users_permissions p ON u.id = p.user_id
class\dao\users.class.php(118): FROM {$prefix}users u LEFT JOIN {$prefix}users_permissions p ON u.id = p.user_id
class\dao\users.class.php(329): $query = "SELECT {$prefix}users.* FROM {$prefix}users, {$prefix}blogs
class\dao\users.class.php(330): WHERE {$prefix}users.id = {$prefix}blogs.owner_id AND {$prefix}blogs.id = '".Db::qstr($blogId)."';";
class\dao\users.class.php(341): $query2 = "SELECT {$prefix}users.* FROM {$prefix}users, {$prefix}users_permissions
class\dao\users.class.php(342): WHERE {$prefix}users.id = {$prefix}users_permissions.user_id
class\dao\users.class.php(343): AND {$prefix}users_permissions.blog_id = '".Db::qstr($blogId)."';";
class\dao\users.class.php(409): $table = "{$prefix}users";
class\summary\data\summarytools.class.php(60): FROM {$prefix}users u LEFT JOIN {$prefix}users_permissions p ON u.id = p.user_id
将所有的users 改为 user
所对应sql语句中的的id改为userid
所对应sql语句中的的user改为username
已記錄
markwu
系統管理員
超級會員
文章: 3928
Mark Wu
Re: plog&vbb完全整合摸索过程
«
回覆文章 #2 於:
九月 08, 2005, 05:28:15 下午 »
ㄟ .....
我實在不建議你這麼做!因為這樣寫出來的東西無法『重複使用』。
我建議:
1. 把 pLog 的 user authentication 的資料來源改到 vbb 的 table。
2. 如果是由 vbb login 進來時,自動產生 plog 的 session
這樣才會簡單!
你可以去參考這一篇
http://wiki.lifetype.org.tw/index.php/Check_Out_from_SVN
,透過 SVN 去拿 1.1 的 code,裡面已經有整合 phpBB 的範例了!
你要是自己要『硬幹』,那會很累的。
作之前,先搜尋中、英文論壇一下吧!有太多的討論了!
Mark
已記錄
問問題前,麻煩請先參考
LifeType 中文文件計畫
與
如何在 LifeType 中文開發論壇發問
。
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #3 於:
九月 08, 2005, 06:04:31 下午 »
但是我希望有人在vbb上注册一个用户的同时,也在plog中注册一个用户,如果有两个表,那么在注册的时候或者比较容易,但是在之后的修改,就会变得很麻烦
接着,我发现vbb和plog对密码的加密方式有所不同
plog就是简单的md5加密
vbb却非常复杂md5(md5(password).特殊字符)
特殊字符是在注册时候生成的存在user表的salt字段中
suoyitong
已記錄
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #4 於:
九月 08, 2005, 06:09:46 下午 »
非常感谢markwu的建议,但是我的e文水平实在是poor,阅读那些鸟文实在还不如读代码
对于password的加密,打算全不统一成md5(md5(password))方式
让两者的加密方式都是md5(md5(password))
虽然这种方式实在有点取巧(不含蓄点的说法就是下三赖)
//vbb
去掉随机字符串
functions_user.php
class_dm_user.php
中的函数fetch_user_salt()
最后return null;
//返回值改为null
//plog
md5(原来的)
Z:\share\www\plog\class\dao\userinfo.class.php(92): $this->_password = md5($newPassword);
Z:\share\www\plog\class\dao\users.class.php(41): WHERE user = '".Db::qstr($user)."' AND password = '".md5($pass)."'
Z:\share\www\plog\class\dao\users.class.php(71): WHERE u.user = '".Db::qstr($user)."' AND u.password = '".md5($pass)."'";
Z:\share\www\plog\class\dao\users.class.php(294): VALUES ('".Db::qstr($user->getUserName())."','".md5($user->getPassword())."','".
修改为md5(md5(password))方式
已記錄
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #5 於:
九月 08, 2005, 06:18:46 下午 »
下一步的任务是在vbb的登录中产生plog的session,继续摸索中
让plog的登录界面失效。。
这样做下去,plog成了vbb的一个附庸,虽然我的本意也是这样
但是在这个论坛上公开这样的言论,也有点诚惶诚恐~
«
最後編輯時間: 九月 08, 2005, 06:21:30 下午 由 laughtosky
»
已記錄
markwu
系統管理員
超級會員
文章: 3928
Mark Wu
Re: plog&vbb完全整合摸索过程
«
回覆文章 #6 於:
九月 08, 2005, 07:11:44 下午 »
引用自: laughtosky 於 九月 08, 2005, 06:18:46 下午
下一步的任务是在vbb的登录中产生plog的session,继续摸索中
让plog的登录界面失效。。
这样做下去,plog成了vbb的一个附庸,虽然我的本意也是这样
但是在这个论坛上公开这样的言论,也有点诚惶诚恐~
還好阿,有什麼好惶恐!本來就是要看你的目的!只是這樣變成無法重複使用,呵呵,很是可惜!
Mark
已記錄
問問題前,麻煩請先參考
LifeType 中文文件計畫
與
如何在 LifeType 中文開發論壇發問
。
markwu
系統管理員
超級會員
文章: 3928
Mark Wu
Re: plog&vbb完全整合摸索过程
«
回覆文章 #7 於:
九月 08, 2005, 07:14:05 下午 »
引用自: laughtosky 於 九月 08, 2005, 06:04:31 下午
但是我希望有人在vbb上注册一个用户的同时,也在plog中注册一个用户,如果有两个表,那么在注册的时候或者比较容易,但是在之后的修改,就会变得很麻烦
接着,我发现vbb和plog对密码的加密方式有所不同
plog就是简单的md5加密
vbb却非常复杂md5(md5(password).特殊字符)
特殊字符是在注册时候生成的存在user表的salt字段中
suoyitong
這就是 OO 的好處了!pLog 1.1 已經提供了一個新 interface, 稱為 userdata,透過他可以來新增對其他系統的認證,又不會改變到原來的程式。而且你說的資料庫的部分,他也會處理。
呵呵!你自己決定要怎麼作吧!
Mark
已記錄
問問題前,麻煩請先參考
LifeType 中文文件計畫
與
如何在 LifeType 中文開發論壇發問
。
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #8 於:
九月 08, 2005, 09:32:00 下午 »
今天终于成为vbb的正版用户,庆祝一下~
已記錄
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #9 於:
九月 14, 2005, 08:40:30 上午 »
今天所有的测试都已经基本上成功
剩下的只是一些细节问题了
为了能在vbb的模板中显示出plog的信息
修改global.php代码
在93行附近插入
然后修改vbb模板的时候,使用$cui_blogid,$cui_blogname来代替当前用户的plog信息
//test by cui
//add plog session
$aaaa = 'hello';
if ($vbulletin->userinfo['userid'] != 0)
{
$cui_userid = $vbulletin->userinfo['userid'];
$cui_userinfo = $db->query_first("SELECT * FROM " .TABLE_PREFIX. "user As user where userid =".$cui_userid);
//获取当前登录用户full_name,其实也没有太大的必要
$cui_username = addslashes_js(unhtmlspecialchars($cui_userinfo['username'], true), '"');
$cui_fullname = addslashes_js(unhtmlspecialchars($cui_userinfo['full_name'], true), '"');
if ($cui_username != '')
{
$cui_bloginfo = $db->query_first("SELECT * FROM " .TABLE_PREFIX. "blogs As plogs where owner_id =".$cui_userid);
//获取当前登录用户的plog
$cui_blogid = addslashes_js(unhtmlspecialchars($cui_bloginfo['id'], true), '"');
$cui_blogname = addslashes_js(unhtmlspecialchars($cui_bloginfo['blog'], true), '"');
if ($cui_blogid != '')
{
//set session
}
else
{
//no blog
}
}
else
{
//error user
}
}
else
{
//no login
}
//test by cui
已記錄
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #10 於:
九月 14, 2005, 08:43:33 上午 »
我用的vbb版本是3.5rc2
还有一点特别要注意
每个用户只能有一个blog
否着获取的只是第一个blog
如果想获取最后一个blog信息
在SQL语句中加上order by id desc
已記錄
markwu
系統管理員
超級會員
文章: 3928
Mark Wu
Re: plog&vbb完全整合摸索过程
«
回覆文章 #11 於:
九月 14, 2005, 08:43:55 上午 »
Hi laughtosky:
我把這一篇移動到外掛程式精華區中了,這是一篇與 pLog/VBB 奮鬥的血淚史。呵呵。
Mark
已記錄
問問題前,麻煩請先參考
LifeType 中文文件計畫
與
如何在 LifeType 中文開發論壇發問
。
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #12 於:
九月 14, 2005, 08:51:39 上午 »
感谢mark~
对于一个不会php的人来说确实蛮辛苦的
接着来~
在vbb浏览用户个人信息中加入此人的blog
在member.php中大约326行加入
然后在摸版中调用$cui_userblogid,$cui_userblogname以获取plog信息
//test by cui
//show plog
if ($userinfo[userid] != '' && $userinfo[userid] != 0)
{
$cui_userbloginfo = $db->query_first("SELECT * FROM " .TABLE_PREFIX. "blogs As blogs where owner_id =".$userinfo[userid] );
$cui_userblogid = addslashes_js(unhtmlspecialchars($cui_userbloginfo['id'], true), '"');
$cui_userblogname = addslashes_js(unhtmlspecialchars($cui_userbloginfo['blog'], true), '"');
if ($cui_userblogid != '')
{
$show['blog'] = true;
}
else
{
$show['blog'] = false;
}
}
else
{
$show['blog'] = false;
}
//test by cui
我是在MEMBERINFO模版中
<if condition="$show['pm']">
<tr>
<td>
$vbphrase[private_message]:<br />
<a href="private.php?$session[sessionurl]do=newpm&u=$userinfo[userid]"><phrase 1="$userinfo[username]">$vbphrase[send_private_message_to_x]</phrase></a>
</td>
</tr>
</if>
<!--add by cui-->
<if condition="$show['blog']">
<tr>
<td>
博客:<br />
<a href="gotoplog.php?mode=view&blogid=$cui_userblogid" target="_blank" rel="nofollow">
<phrase 1="$userinfo[username]">
$cui_userblogname
</phrase>
</a>
</td>
</tr>
</if>
<!--add end-->
顺便说一下,mark这家伙干什么的
成天都挂在论坛上?
已記錄
laughtosky
新手見習
文章: 20
Re: plog&vbb完全整合摸索过程
«
回覆文章 #13 於:
九月 14, 2005, 09:02:45 上午 »
最后做一个跳板,从vbb进入plog的时候设置plog的session
参考mark给的一段代码
// 產生一個新的 user 物件
$users = new Users();
// 取得 userInfo 物件 (透過正確的 username 與 password)
$userInfo = $users->getUserInfo( $userName, $userPassword );
// 取得使用者的 blog list
$userBlogs = $users->getUsersBlogs( $userInfo->getId(), BLOG_STATUS_ACTIVE );
// 用第一個 blog 來當作 blogID,並取得這個 blog ID 的 blogInfo
$blogInfo = end( $userBlogs );
// 取得 session
$session = HttpVars::getSession();
$sessionInfo = $session["SessionInfo"];
// 並且把資料寫入session
$sessionInfo->setValue( "userInfo", $userInfo );
$sessionInfo->setValue( "blogInfo", $blogInfo );
$session["SessionInfo"] = $sessionInfo;
HttpVars::setSession( $session );
我修改了一下users.class.php
在62行附近添加了一个函数
目的是不通过用户密码就能获取用户信息getUserInfo
//test by cui
function cui_getUserInfo_nopass( $user)
{
$prefix = $this->getPrefix();
$query = "SELECT u.userid AS userid, u.username AS username, u.password AS password, u.email AS email,
u.about AS about, u.full_name AS full_name, u.properties AS properties,
u.resource_picture_id AS resource_picture_id,
IF(p.permission_id = 1, 1, 0 ) AS site_admin,
u.status AS status
FROM {$prefix}user u LEFT JOIN {$prefix}users_permissions p ON u.userid = p.user_id
WHERE u.username = '".Db::qstr($user)."'";
$userInfo = $this->_getUserInfoFromQuery( $query );
return $userInfo;
}
//test by cui
然后
// 產生一個新的 user 物件
$users = new Users();
// 取得 userInfo 物件 (透過正確的 username 與 password)
$userInfo = $users->cui_getUserInfo_nopass( $userName );
// 取得使用者的 blog list
$userBlogs = $users->getUsersBlogs( $userInfo->getId(), BLOG_STATUS_ACTIVE );
// 用第一個 blog 來當作 blogID,並取得這個 blog ID 的 blogInfo
$blogInfo = end( $userBlogs );
// 取得 session
$session = HttpVars::getSession();
$sessionInfo = $session["SessionInfo"];
// 並且把資料寫入session
$sessionInfo->setValue( "userInfo", $userInfo );
$sessionInfo->setValue( "blogInfo", $blogInfo );
$session["SessionInfo"] = $sessionInfo;
HttpVars::setSession( $session );
只需要给出vbb的username的session就可以建立plog的session
然后跳转到admin.php就可以了
到此应该可以告一段落了
剩下的都是细节问题了
再次感谢mark无私的帮助~
«
最後編輯時間: 九月 14, 2005, 09:15:02 上午 由 laughtosky
»
已記錄
頁:
[
1
]
列印
LifeType 中文開發論壇
|
開發
|
外掛程式
|
外掛程式精華區
|
plog&vbb完全整合摸索过程
« 上篇主題
下篇主題 »
前往:
請選擇目的地:
-----------------------------
站務
-----------------------------
=> 站務公告
=> 站務建議
=> 帳號與文章刪除
-----------------------------
支援
-----------------------------
=> 安裝與設定
=> 使用與操作
=> 虛擬主機討論
=> Instant LifeType 專區
===> 安裝與設定精華區
===> 使用與操作精華區
===> 虛擬主機討論精華區
===> 虛擬主機商自我推薦區
===> Instant LifeType 精華區
-----------------------------
開發
-----------------------------
=> 外掛程式
=> 模版設計
=> 核心補強
=> 手冊文件
=> 中文相關
===> 外掛程式精華區
===> 模版發表
===> 模版設計精華區
===> 核心補強精華區
===> 手冊文件精華區
===> 中文相關精華區
-----------------------------
測試
-----------------------------
=> LifeType 1.0 測試
=> LifeType 1.1 測試
-----------------------------
部落格應用
-----------------------------
=> 教育部落格
-----------------------------
建議
-----------------------------
=> 要求與建議
=> 發表與交流
=> 網誌文化與業界動態
Powered by SMF 1.1.6
|
SMF © 2006-2008, Simple Machines LLC
載入...