列出文章
|
頁: [1] 2
|
2
|
開發 / 外掛程式 / Re: [詢問] Gallery2 目前是否只有英文呢!?
|
於: 十月 21, 2005, 12:43:15 下午
|
發現似乎是系統沒啟動gettext這個功能。
我的環境: 平台:win 2000 IIS php版本:4.3.3
請善用 www.php.net 的 PHP reference manual,在遇到 PHP 安裝或設定問題時,他可以幫你很多忙。 gettext 的 function manual 裡面有一段 Note to Win32 Users: In order to enable this module on a Windows environment, you must copy gnu_gettext.dll from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). Starting with PHP 4.2.3 the name changed to libintl-1.dll, this requires also iconv.dll to be copied. libintl-1.dll is not needed as of PHP 4.3.8, iconv.dll is not needed as of PHP 5. 所以你要把 PHP/Dlls 中或是 PHP/Win32 中的 libintl-1.dll 與 iconv.dll 複製到 C:\WINNT\SYSTEM32 ... 因為你的 PHP 版本是 4.3.3。這樣你才可以使用 gettext。 Mark 解决问题了
|
|
|
7
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 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无私的帮助~
|
|
|
8
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 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这家伙干什么的 成天都挂在论坛上?
|
|
|
9
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 14, 2005, 08:43:33 上午
|
我用的vbb版本是3.5rc2 还有一点特别要注意 每个用户只能有一个blog 否着获取的只是第一个blog 如果想获取最后一个blog信息 在SQL语句中加上order by id desc
|
|
|
10
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 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
|
|
|
12
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 08, 2005, 06:18:46 下午
|
下一步的任务是在vbb的登录中产生plog的session,继续摸索中 让plog的登录界面失效。。 这样做下去,plog成了vbb的一个附庸,虽然我的本意也是这样 但是在这个论坛上公开这样的言论,也有点诚惶诚恐~
|
|
|
13
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 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))方式
|
|
|
14
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 08, 2005, 06:04:31 下午
|
但是我希望有人在vbb上注册一个用户的同时,也在plog中注册一个用户,如果有两个表,那么在注册的时候或者比较容易,但是在之后的修改,就会变得很麻烦
接着,我发现vbb和plog对密码的加密方式有所不同 plog就是简单的md5加密 vbb却非常复杂md5(md5(password).特殊字符) 特殊字符是在注册时候生成的存在user表的salt字段中 suoyitong
|
|
|
15
|
開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程
|
於: 九月 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
|
|
|
|
|
|