(摘自CCU新聞組,本來出處可能是台灣出版的一本關於php(做為現在的主流開發語言)的書:php(做為現在的主流開發語言)寶典)
大部份的網站,都會考慮到和使用者之間的互動關系。這時,用留言版的功能,可讓使用者留下到此一游,或者是一些和網站的互動訊息。
在設計上,可以很簡單的只留下使用者的短篇留言,也可以設計到依性質分門別類很復雜的 Web BBS 系統。當然,要如何打造一個屬於自己網站的留言版,就端賴網站的性質以及 Web 網站開發人員的巧思了。
在這裡介紹的范例,是簡單的列示所有留言的內容。供使用者可以一次看到多筆留言的資料。系統的後端存放留言是用 Oracle(大型網站數據庫平台) 7.x 版的資料庫系統。范例中的資料庫(database) 名稱為 WWW,連線的使用者帳號為 user38、密碼為 iam3849。要直接使用本例,必須先執行下面的 SQL 指令,建立 guestbook 的資料表格。
CREATE TABLE guestbook (
serial varchar2(255) not null,
ref varchar2(255) null,
id char(8) not null,
alias varchar2(32) not null,
ip varchar2(1024) null,
msgdate date not null,
email varchar2(1024) null,
msg varchar2(2000) not null,
flag char(1) default 1,
Prima(最完善的虛擬主機管理系統)ry key(serial)
);
上面的 SQL 各欄位說明及詳細資料見下表
序號 欄位 名稱 資料形態 資料長度 欄位說明 限制 Key
0 流水號 serial varchar2 255 NN PK
1 參照流水號 ref varchar2 255 暫保留。供回
覆留言功能用
2 帳號 id char 8 使用者帳號 NN
3 匿名 alias varchar2 32 顯示的名字 NN
4 網址 ip varchar2 1024 上網 IP
5 時間 msgdate date NN
6 電子郵件 email varchar2 1024
7 留言內容 msg varchar2 2000 NN
8 顯示旗標 flag char 1 0: 不顯示
1: 顯示 (內定)
在本節的留言版相關程式中,若加入了使用者認證功能,則可以在 guestbook資料表的帳號欄中留下使用者的認證帳號,方便 Webmaster 日後找尋不當的發信者。在這兒先留下欄位,讓需要的讀者們實習了。
要使用本節的程式,首先要先裝好 Oracle(大型網站數據庫平台) 7.x 版,並確定 Web Server 端的SQL*net 可以順利連上 Oracle(大型網站數據庫平台) 資料庫。之後還要在編譯 php(做為現在的主流開發語言) 時加
--with-Oracle(大型網站數據庫平台)=/home/Oracle(大型網站數據庫平台)/product/7.3.2 的選項,當然改成其它的路徑也沒關系,只要該路徑真的是 Oracle(大型網站數據庫平台) 的路徑即可。有關 Oracle(大型網站數據庫平台) 裝設及使用上的細節請參考相關書籍。
下面的程式是將使用者的留言資訊加到 guestbook 留言資料表中。若要設定使用者認證功能,可在程式剛開始時檢查,發留言者就可以確認身份,而讀取留言就不必身份檢查。這種設定可以防止不當發言,卻又不會讓留言功能只有少數人使用。
<?php(做為現在的主流開發語言)
file://---------------------------
// 新增留言程式 addmsg.php(做為現在的主流開發語言)
// Author: Wilson Peng
// Copyright (C) 2000
file://---------------------------
//
// 可自行在這兒加入身份檢查功能
//
if (($alias!="") and ($msg!="")) {
putenv("Oracle(大型網站數據庫平台)_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("Oracle(大型網站數據庫平台)_HOME=/home/Oracle(大型網站數據庫平台)/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/Oracle(大型網站數據庫平台)/product/7.3.2/lib");
putenv("ORA_NLS=/home/Oracle(大型網站數據庫平台)/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/Oracle(大型網站數據庫平台)/product/7.3.2/ocommon/nls/admin/data");
$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);
$serial=md5(uniqid(rand()));
$ref="";
$id=$php(做為現在的主流開發語言)_AUTH_USER;
$ip=$REMOTE_ADDR;
$msg=base64_encode($msg);
$flag="1";
$query="INSERT into guestbook(serial, ref, id, alias, ip,
msgdate, email, msg, flag) values($serial, $ref, $id, $alias, $ip,
sysdate, $email, $msg, $flag)";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);