中文資訊科技應用 | 首頁 | 前頁 | 交流 | 搜尋 | 地圖

中文教學 > 中文資訊科技應用 > CGI > 如何建立討論區?(以 wwwboard 為例)

如何建立討論區?(以 wwwboard 為例)

本站討論區見於 論壇(login: students;password: student)。


一、下載程式

wwwboard 載於 http://web.hku.hk/~jwilam/it/cgi/wwwboard-hku.zip,把程式以「另存目標」方式下載到電腦任何一個目錄之中,下載並解壓後,得到以下四個檔案:
  1. wwwboard.pl - 以 Perl 編寫的 wwwboard 程式。
  2. wwwadmin.pl - 以 Perl 編寫的 wwwboard 管理程式。
  3. passwd.txt - 記錄 wwwboard 管理人員登入名稱與登入密碼的純文件檔。
  4. wwwboard.html - 程式供應者提供的網頁。
  5. faq.html - 供使用 wwwboard 的瀏覽者閱讀的 faq 文件。
  6. README.txt - 說明如何安裝 wwwboard 程式的文件。
  7. ADMIN_README.txt - 說明如何管理 wwwboard 的文件。
  8. MANIFEST - 列述 Simple Search 所包含檔案的文件。
  9. ChangeLog - 說明 wwwboard 更新情況的文件。

首 5 檔案須上載到伺服器,後 4 檔案為說明文件。

有關程式原載於 nms-cgi.sourceforge.net;唯本站下載的程式已作初步修改,設定時比較方便。


二、伺服器目錄設定:建立目錄

以 ftp 程式,在網站的根目錄(「public_html」其實就是網站的根目錄,例如本站的根目錄為-- http://web.hku.hk/~jwilam。)下建立名為 cgi-bin 的目錄,然後再在 cgi-bin 目錄內建立兩層目錄:

先在 cgi-bin 下,按「MkDir」按鈕,建立 wwwboard 目錄:

然後記下此新建目錄在伺服器上的實際位址,如上圖,wwwboard 位於 /user3/jwilam/public_html/cgi-bin 之下,換言之,wwwboard 的位址為:

/user3/jwilam/public_html/cgi-bin/wwwboard

這一位址中套紅部份人人不同,但十分重要,必須先行記下。


三、程式設定

如果程式是從 http://web.hku.hk/~jwilam/it/cgi/wwwboard-hku.zip 下載的話,只須作以下的修改(切記以 notepad 修改,千萬千萬不要以 MS Word 修改):

1. 設定 wwwboard.pl

尋找以下套紅部份,根據步驟二所記下的資料,修改其中的「userX」與「XXX」(XXX 為個人登入 hkusua 伺服器或電郵系統的名稱 login name,一般格式為 hxxxxxx,此名稱由香港大學提供,並且人人不同)中的「X」:

$DEBUGGING = 1;
$emulate_matts_code = 1;
$max_followups = 10;
$basedir = '/userX/XXX/public_html/cgi-bin/wwwboard';
$baseurl = 'http://web.hku.hk/~XXX/cgi-bin/wwwboard';
$cgi_url = '/cgi-bin/cgiwrap/XXX/wwwboard/wwwboard.pl';

$mesgdir = 'messages';
$datafile = 'data.txt';
$mesgfile = 'wwwboard.html';
$faqfile = 'faq.htm';
$ext = 'html';
$title = "NMS WWWBoard Version $VERSION";
$style = '../../style.css';
$show_faq = 1;
$allow_html = 1;
$quote_text = 1;
$quote_char = ':';
$quote_html = 1;
$subject_line = 0;
$use_time = 1;
$date_fmt = '%d/%m/%y';
$time_fmt = '%T';
$show_poster_ip = 1;
$enable_preview = 0;
$enforce_max_len = 0;
%max_len = ('name' => 50,
'email' => 70,
'subject' => 80,
'url' => 150,
'url_title' => 80,
'img' => 150,
'body' => 3000,
'origsubject' => 80,
'origname' => 50,
'origemail' => 70,
'origdate' => 50);
$strict_image = 1;
@image_suffixes = qw(png jpe?g gif);
$locale = '';
$charset = 'big5';

以下是一個例子(這部份人人不同,但大致相似):

$DEBUGGING = 1;
$emulate_matts_code = 1;
$max_followups = 10;
$basedir = '/user3/jwilam/public_html/cgi-bin/wwwboard';
$baseurl = 'http://web.hku.hk/~jwilam/cgi-bin/wwwboard';
$cgi_url = '/cgi-bin/cgiwrap/jwilam/wwwboard/wwwboard.pl';
$mesgdir = 'messages';
$datafile = 'data.txt';
$mesgfile = 'wwwboard.html';
$faqfile = 'faq.html';
$ext = 'html';
$title = "NMS WWWBoard Version $VERSION";
$style = '../../style.css';
$show_faq = 1;
$allow_html = 1;
$quote_text = 1;
$quote_char = ':';
$quote_html = 1;
$subject_line = 0;
$use_time = 1;
$date_fmt = '%d/%m/%y';
$time_fmt = '%T';
$show_poster_ip = 1;
$enable_preview = 0;
$enforce_max_len = 0;
%max_len = ('name' => 50,
'email' => 70,
'subject' => 80,
'url' => 150,
'url_title' => 80,
'img' => 150,
'body' => 3000,
'origsubject' => 80,
'origname' => 50,
'origemail' => 70,
'origdate' => 50);
$strict_image = 1;
@image_suffixes = qw(png jpe?g gif);
$locale = '';
$charset = 'big5';

2. 設定 wwwadmin.pl

尋找以下套紅部份,根據步驟二所記下的資料,修改其中的「userX」與「XXX」(XXX 為登入名稱):

$DEBUGGING = 1;
$emulate_matts_code = 1;
$basedir = '/userX/XXX/public_html/cgi-bin/wwwboard';
$baseurl = 'http://web.hku.hk/~XXX/cgi-bin/wwwboard';
$cgi_url = '/cgi-bin/cgiwrap/XXX/wwwboard/wwwadmin.pl';

$mesgdir = 'messages';
$datafile = 'data.txt';
$mesgfile = 'wwwboard.html';
$passwd_file = 'passwd.txt';
$ext = 'html';
$title = "NMS WWWBoard Version $VERSION";
$style = '../../style.css';
$locale = '';
$charset = 'big5';

以下是一個例子(這部份人人不同,但大致相似):

$DEBUGGING = 1;
$emulate_matts_code = 1;
$basedir = '/user3/jwilam/public_html/cgi-bin/wwwboard';
$baseurl = 'http://web.hku.hk/~jwilam/cgi-bin/wwwboard';
$cgi_url = '/cgi-bin/cgiwrap/jwilam/wwwboard/wwwadmin.pl';
$mesgdir = 'messages';
$datafile = 'data.txt';
$mesgfile = 'wwwboard.html';
$passwd_file = 'passwd.txt';
$ext = 'html';
$title = "NMS WWWBoard Version $VERSION";
$style = '../../style.css';
$locale = '';
$charset = 'big5';

以上兩程式檔還有兩項修改無妨的部份--如顯示的標題 ($title)、CSS 檔的位址 ($style),可參見:README.txt 與 ADMIN_README.txt 兩文件的說明。


四、網頁與啟動設定

1. 設定網頁:

程式供應者已提供網頁 wwwboard.htm,可以不必另行編寫;如要更改版面,固然可以自行修改。

2. 設定啟動:

程式供應者所提供的網頁 wwwboard.htm 中已有以下啟動 cgi 程式 wwwboard.pl 的語句,不必自行加入,但須把其中的「XXX」改成登入名稱:

<body>

......

<form method="post" action="http://web.hku.hk/cgi-bin/cgiwrap/XXX/wwwboard/wwwboard.pl">

......

</form>

......

</body>

例如:

<form method="post" action="http://web.hku.hk/cgi-bin/cgiwrap/jwilam/wwwboard/wwwboard.pl">

五、上載程式到設定好的目錄中去

上載以下檔案到步驟二所建目錄。務必注意:上載必須選擇「ASCII」方式而不能用「Binary」方式

  1. wwwboard.pl - 以 Perl 編寫的 wwwboard 程式。
  2. wwwadmin.pl - 以 Perl 編寫的 wwwboard 管理程式。
  3. passwd.txt - 記錄 wwwboard 管理人員登入名稱與登入密碼的純文件檔。
  4. wwwboard.html - 程式供應者提供的網頁。
  5. faq.htm - 供使用 wwwboard 的瀏覽者閱讀的 faq 文件。


六、伺服器權限設定:允許伺服器執行

所有上載到伺服器中的程式,或新增的目錄,伺服器系統為安全起見,均先設定為不許公眾執行或修改,就像預設了一把鎖,不許別人啟用。因此,要讓公眾執行程式,以及讓公眾把他們所輸入的資料儲存在伺服器中,我們便得先開鎖,也就是開放程式及目錄的權限,讓公眾執行或修改。


六.一、telnet 入伺服器,如本站的 hkusua.hku.hk

按視窗的 「開始 > 執行 > telnet hkusua.hku.hk」,如下圖:


六.二、登入 hkusua.hku.hk 伺服器

輸入密碼後完成登入程序

telnet 程式不認識「退回 backspace」鍵,如輸入錯誤,可先按下「enter」,你會看到錯誤訊息,不必理會,然後再重新輸入即可。


六.三、改變程式及檔案屬性 (chmod)

輸入下列指令:

指令 功用

cd public_html

cd cgi-bin

cd wwwboard

ls

chmod 755 wwwboard.pl

chmod 644 wwwboard.html

chmod 755 wwwadmin.pl

chmod 666 passwd.txt

進入(change directory) public_html 資料夾。(註 1)

進入 cgi-bin 資料夾。

進入 wwwboard 資料夾。

列出 (list) 當下目錄內的檔案。

改變 (change mode) 程式 wiki.pl 的屬性為 755。

改變檔案 wwwboard.html 的屬性為 644。(註 2)

改變程式 wwwadmin.pl 的屬性為 755。

改變檔案 passwd.txt 的屬性為 666。

如下圖所示:

註 1:有些同學在成功登入 hkusua.hku.hk 後,伺服器會立即自動進入 public_html 目錄,如屬這情況,便須略去「cd public_html」的步驟,一開始便是「cd cgi-bin」了。

註 2:根據程式供應者說明,wwwboard.html 屬性須為 777,但經驗所得,644 即可。


七、試用成功後,把 wwwboard.htm 連結加到網頁裡


八、試用成功後,更改管理 wwwboard 的登入名稱與密碼

1. 連結到 wwwadmin.pl 的管理程式,cgi 程式的網址一般有三種表達方法,但 hkusua 只容許第三種

表達 cgi 程式位址的方式 說明
1
http://web.hku.hk/~XXX/cgi-bin/wwwboard/wwwadmin.pl hkusua 不容許這種 cgi 網址表達式
2
http://www.hku.hk/XXX/cgi-bin/wwwboard/wwwadmin.pl hkusua 不容許這種 cgi 網址表達式
3
http://web.hku.hk/cgi-bin/cgiwrap/XXX/wwwboard/wwwadmin.pl 如以上兩種表達方式均產生錯誤,可試用這一種;這方式也略去「~」符號。。

2. 擊入 Change Admin Password 更改管理 wwwboard 的登入名稱與密碼:

3. 更改登入名稱與密碼。預先設定的登入名稱與密碼為(注意:大小寫視為不同符號):

Username: WebAdmin
Password: WebBoard


九、在 /cgi-bin/wwwboard 目錄上加入瀏覽控制

網上有許多自動程式,自動尋找討論區網址,大肆張貼垃圾郵件。要杜絕這種情況,最簡單的辦法便是把 wwwboard.pl 所在目錄,加入登錄限制,要瀏覽者輸入登入名稱和密碼方可進入,而登入名稱和密碼則大可在網頁上公布,讓瀏覽者知道。自動程式不能看懂網頁(至少暫時如此,日後難說),因此便無法張貼垃圾郵件了。

以下便是把限制登錄的「.nsconfig 」純文字檔加到 wwwboard 目錄中的情況:

如何在 hkusua 伺服器上加入登錄限制,詳見 htaccess.htm 的說明。