[討論] 忽發奇想!不知能否這樣做?

Webmasters Discussion
站長們到此分享架站甘苦、管理心得等;歡迎大家多多提出意見喔!
(請勿發表任何跟站長經驗分享不相干的文章,違者砍文)

版主: 版主管理群

china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

[討論] 忽發奇想!不知能否這樣做?

文章 china2000 »

使用版本:phpBB 2.0.5,採用BMan1Blue為預設風格,Linux為操作系統,MySQL
4.0.15 ,租用外國的主機空間。

狀況描述:最近發覺我站的登記人數忽然大增!對我來說並不是好事!因為會增加交通流量和我要支付額外的traffic!還有一件不好的事就是大約有40%的人登記後不再回來!害我要花很多時間來處理這些人,心想既然你們亂來的那莫怪我無情了!忽發奇想下有以下的念頭:

打算開一區來給未登記的人看的!然而這區的版面內容全是讓人悶得要死的話題!內容和網站原本內容是風馬牛不相及的事!好讓那些無聊的人看得發呆後不想登記就跑掉!但當已登記的會員登入後,真實的區域和版面才顯現出來!但原先用來作煙幕/幌子的區域和版面在這時登入後是看不見的!

我知道前部份是可以在版面權限設定中搞定!意思是說未登入的人只能看到特定的版面!但是後部份卻不可以!因為登入後除了應該看到的版面看得到外,還要加上那些用來作煙幕/幌子的區域和版面!但那些用來作煙幕/幌子的本來是不應該出現~

不知道有什麼方法可以這樣做?
Arisa520
星球公民
星球公民
文章: 206
註冊時間: 2003-10-27 00:26

文章 Arisa520 »

不要開放註冊不就好了~
當有需要人再給他加入~
還趕跑別人?!
做幌子...會不會有點麻煩~@@
小意見...純參考...
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

Arisa520學兄,網站仍是要對外開放註冊的,但希望讓那些真的有心人來註冊,而那些網上盲流則怕怕了!只好出此下策吧~
問題狂
竹貓忠實會員
竹貓忠實會員
文章: 1947
註冊時間: 2004-06-28 17:13

文章 問題狂 »

或許可以只開放幾個版面的權限給訪客看
剩下只設定給註冊會員瀏覽
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

問題狂學兄,我現在正是使用這個方法來對付那些網上盲流,但那幾個沒有用的版面那些巳註冊會員亦看見 -@@~ 真的不想他們也看到 @@~
問題狂
竹貓忠實會員
竹貓忠實會員
文章: 1947
註冊時間: 2004-06-28 17:13

文章 問題狂 »

china2000 寫:問題狂學兄,我現在正是使用這個方法來對付那些網上盲流,但那幾個沒有用的版面那些巳註冊會員亦看見 -@@~ 真的不想他們也看到 @@~
看來也只能就樣子了...
不過目前我沒有看過類似的外掛.... :oops:
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

也許可能要用html來做一個假的外版來作幌子!只有一個link才能連到login的版面!但那些已bookmark shortcut的人則對付不了!只可能對付那些新來的-~
動機不明
喝咖啡的綠皮猴
喝咖啡的綠皮猴
文章: 1179
註冊時間: 2002-03-06 20:37
來自: GOP (重啟)

文章 動機不明 »

訪客的 user_id 是 -1
你可以試著修改 index.php (?) 還是什麼的... 忘了 ^^||
在列出版面的那段語法上加上 user_id 的判斷,就可以區分訪客與會員的版面了...

應該是可以這樣沒錯,但是我沒架論壇所以幫不上忙,只能幫忙出主意而已... :-?
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

動機不明 ~ Would you kindly to discuss more about it ? It seems a way to solve it :) How to make the 訪客 can only view the preset forum but the other login guy can't view it ?
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

各位學兄和師長,動機不明學兄的構思似乎可行!能否一同討論和研究來實現它嗎?
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

噢-~ 嘗試在index.php改但終歸失敗收場 @@~ 幸而有備份!否則~~
messagebox
竹貓忠實會員
竹貓忠實會員
文章: 981
註冊時間: 2003-02-24 23:34

文章 messagebox »

請愛用這個東西
if ( $userdata['session_logged_in'] )
//假如訪客沒有登入\r
}
if ( !$userdata['session_logged_in'] )
//假如訪客已經登入\r
}
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

messagebox學兄,我雖然是網管但對php的語法是完全一竅不通的 @@~ 能否幫忙一下呢?
messagebox
竹貓忠實會員
竹貓忠實會員
文章: 981
註冊時間: 2003-02-24 23:34

文章 messagebox »

依照你的需求~~我會這樣做~~~
先去後台開一個分區~~自己記住分區編號(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";
}
---------------這是分格線---------------
這篇回覆只是大概給個觀念~~真正要實做必須要做測試~
china2000
星球公民
星球公民
文章: 194
註冊時間: 2003-10-24 23:00
來自: 傷講

文章 china2000 »

謝謝messagebox學兄的幫忙,我已試著學兄的方法去修改index.php,雖不成功但我相信只是我的理解能力的問題!以下便是我修改的情況和後果!

我search
if($userdata['session_logged_in'] )
在文件中找到有四處是吻合的但只有這段
/
// 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這語句但內容卻大大不同!於是我用
$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
來搜尋,找到了
//
// 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)
{
a) 當我修改成這樣子時則那個作為幌子的分區不論有沒有登入都可以看見!但其它的分區登入後也不能看見!所有分區都隱型了除了那個作為幌子的分區外!修改的內容如下
$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*
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";
$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";
若我還有3,5,7,10,11等區份要在登入後看見該如何改?如何在未登入時只看見25的區份而登入後則會看不見?

各位能否找出我的錯處?
回覆文章

回到「站長交流」