歡迎光臨, 訪客. 請先 登入註冊一個帳號.
三月 29, 2024, 05:50:40 下午
19595 文章 在 3865 主題 由 4580 會員
最新註冊會員: aa123aa1
  列出文章
頁: [1] 2
1  站務 / 站務公告 / Re: [成功案例] LifeType Successful Sotry 於: 十一月 29, 2005, 01:59:57 下午
我还以为进错网站了呢~绝对倒塌~
跟QQ改名是一个原因~

本来绝对有可能成为成功案例的一员
不过被老板cancel掉了~
改用asp的blog系统了~
唉~小人物我没有发言权
辛苦一个月整合的vbb+plog就这么付诸东流了~
我哭我哭我使劲地哭~
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

解决问题了
3  開發 / 外掛程式精華區 / Re: [分享] 透過 XMLRPC 來管理PLog帳號和 Blog 於: 十月 20, 2005, 05:47:49 下午
很有用~~
我慢慢x消化

4  支援 / 安裝與設定 / Re: [呼籲]請大家在簽名檔寫下自己的pLog執行環境 於: 十月 15, 2005, 03:18:03 下午
2003+iis6+php440+mysql41
5  開發 / 外掛程式 / Re: 如何对已经存在的user添加一个blog 於: 九月 22, 2005, 08:16:17 上午
markwu最近到哪里去了?奇怪~
6  開發 / 外掛程式 / 如何对已经存在的user添加一个blog 於: 九月 19, 2005, 03:33:03 下午
上次mark给我一段设置session的代码受益良多
这次又来请教~
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&amp;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
11  開發 / 外掛程式精華區 / Re: plog&vbb完全整合摸索过程 於: 九月 08, 2005, 09:32:00 下午
今天终于成为vbb的正版用户,庆祝一下~
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
頁: [1] 2