[討論] 忽發奇想!不知能否這樣做?
版主: 版主管理群
[討論] 忽發奇想!不知能否這樣做?
使用版本:phpBB 2.0.5,採用BMan1Blue為預設風格,Linux為操作系統,MySQL
4.0.15 ,租用外國的主機空間。
狀況描述:最近發覺我站的登記人數忽然大增!對我來說並不是好事!因為會增加交通流量和我要支付額外的traffic!還有一件不好的事就是大約有40%的人登記後不再回來!害我要花很多時間來處理這些人,心想既然你們亂來的那莫怪我無情了!忽發奇想下有以下的念頭:
打算開一區來給未登記的人看的!然而這區的版面內容全是讓人悶得要死的話題!內容和網站原本內容是風馬牛不相及的事!好讓那些無聊的人看得發呆後不想登記就跑掉!但當已登記的會員登入後,真實的區域和版面才顯現出來!但原先用來作煙幕/幌子的區域和版面在這時登入後是看不見的!
我知道前部份是可以在版面權限設定中搞定!意思是說未登入的人只能看到特定的版面!但是後部份卻不可以!因為登入後除了應該看到的版面看得到外,還要加上那些用來作煙幕/幌子的區域和版面!但那些用來作煙幕/幌子的本來是不應該出現~
不知道有什麼方法可以這樣做?
4.0.15 ,租用外國的主機空間。
狀況描述:最近發覺我站的登記人數忽然大增!對我來說並不是好事!因為會增加交通流量和我要支付額外的traffic!還有一件不好的事就是大約有40%的人登記後不再回來!害我要花很多時間來處理這些人,心想既然你們亂來的那莫怪我無情了!忽發奇想下有以下的念頭:
打算開一區來給未登記的人看的!然而這區的版面內容全是讓人悶得要死的話題!內容和網站原本內容是風馬牛不相及的事!好讓那些無聊的人看得發呆後不想登記就跑掉!但當已登記的會員登入後,真實的區域和版面才顯現出來!但原先用來作煙幕/幌子的區域和版面在這時登入後是看不見的!
我知道前部份是可以在版面權限設定中搞定!意思是說未登入的人只能看到特定的版面!但是後部份卻不可以!因為登入後除了應該看到的版面看得到外,還要加上那些用來作煙幕/幌子的區域和版面!但那些用來作煙幕/幌子的本來是不應該出現~
不知道有什麼方法可以這樣做?
-
messagebox
- 竹貓忠實會員

- 文章: 981
- 註冊時間: 2003-02-24 23:34
-
messagebox
- 竹貓忠實會員

- 文章: 981
- 註冊時間: 2003-02-24 23:34
依照你的需求~~我會這樣做~~~
先去後台開一個分區~~自己記住分區編號(cat_id)
---------------這是分格線---------------
接下來~對index.php大改造~~~
原本的index.php是將所有分區都列出\r
你就改成這樣~~~
if ($userdata['session_logged_in'] )
//原本的程式段~但要將列出討論區的SQL修改一下~
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id != 只給沒登入的人觀看的分區
ORDER BY c.cat_order";
//其他省略\r
}else{
//這邊就是沒有登入的人~一樣~改一下SQL
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id = 只給沒登入的人觀看的分區
ORDER BY c.cat_order";
}
---------------這是分格線---------------
這篇回覆只是大概給個觀念~~真正要實做必須要做測試~
先去後台開一個分區~~自己記住分區編號(cat_id)
---------------這是分格線---------------
接下來~對index.php大改造~~~
原本的index.php是將所有分區都列出\r
你就改成這樣~~~
if ($userdata['session_logged_in'] )
//原本的程式段~但要將列出討論區的SQL修改一下~
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id != 只給沒登入的人觀看的分區
ORDER BY c.cat_order";
//其他省略\r
}else{
//這邊就是沒有登入的人~一樣~改一下SQL
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id = 只給沒登入的人觀看的分區
ORDER BY c.cat_order";
}
---------------這是分格線---------------
這篇回覆只是大概給個觀念~~真正要實做必須要做測試~
謝謝messagebox學兄的幫忙,我已試著學兄的方法去修改index.php,雖不成功但我相信只是我的理解能力的問題!以下便是我修改的情況和後果!
我search
各位能否找出我的錯處?
我search
在文件中找到有四處是吻合的但只有這段if($userdata['session_logged_in'] )
是有SQL這語句但內容卻大大不同!於是我用/
// Obtain a list of topic ids which contain
// posts made since user last visited
//
if ( $userdata['session_logged_in'] )
{
$sql = "SELECT t.forum_id, t.topic_id, p.post_time
FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
WHERE p.post_id = t.topic_last_post_id
AND p.post_time > " . $userdata['user_lastvisit'] . "
AND t.topic_moved_id = 0";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query new topic information', '', __LINE__, __FILE__, $sql);
}
$new_topic_data = array();
while( $topic_data = $db->sql_fetchrow($result) )
{
$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
}
}
//
// Obtain list of moderators of each forum
// First users, then groups ... broken into two queries
//
來搜尋,找到了$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
a) 當我修改成這樣子時則那個作為幌子的分區不論有沒有登入都可以看見!但其它的分區登入後也不能看見!所有分區都隱型了除了那個作為幌子的分區外!修改的內容如下//
// Start page proper
//
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c
ORDER BY c.cat_order";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query categories list', '', __LINE__, __FILE__, $sql);
}
while( $category_rows[] = $db->sql_fetchrow($result) );
if( ( $total_categories = count($category_rows) ) )
{
//
// Define appropriate SQL
//
switch(SQL_LAYER)
{
b) 當我修改成這樣子時則那個作為幌子的分區不論有沒有登入都不可看見!但其它的分區則沒有問題!修改的內容如下$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id !=25
ORDER BY c.cat_order";
*25是那個分區的id*
c) 當我修改成這樣子時仍不可以在未登入時看見25的區份!但我只能在登入後看見1個應要顯示區份!修改的內容如下$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id=25
ORDER BY c.cat_order";
*25是那個分區的id*
若我還有3,5,7,10,11等區份要在登入後看見該如何改?如何在未登入時只看見25的區份而登入後則會看不見?$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id !=25
ORDER BY c.cat_order";
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c WHERE c.cat_id = 1
ORDER BY c.cat_order";
各位能否找出我的錯處?

