1.. 初始化
2.. 取數據庫中的數據
3.. 計算要顯示的頁數
4.. 送出資料
這個程序在 biglobe 上有實作,由于這是一間 isp 公司,因此在設定時限定連結或專線的會員才能看到,進入前要輸入帳號及密碼。為了保護留言者的隱私,留言以馬賽克處理。
$webmasteriparray = array(
"10.0.1.30", // 管理人員甲的機器 ip
"10.0.2.28" // 管理人員乙的機器 ip
);
$webmasterip=false;
for ($i=0; $i<count($webmasteriparray); $i++) {
if ($remote_addr == $webmasteriparray[$i]) $webmasterip=true;
}
// 之后初始化 oracle 程序略
顯示程序和留言程序的初始化部份都差不多,但顯示程序多加了一個功能,設定webmaster 的電腦。將 webmaster 使用的 ip address 加在 $webmasteriparray 陣列變數中,可以在顯示留言時,顯示刪除留言的字串,方便處理不當的留言。
$handle=ora_logon("[email protected]","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);
$query="select serial, ref, id, alias, ip, to_char(msgdate,
'yyyy/mm/dd hh:mi:ss'), email, msg from guestbook where flag='1' order by
msgdate desc";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
$i=0;
while(ora_fetch($cursor)) {
$guestbook[$i][0] = ora_getcolumn($cursor,0);
$guestbook[$i][1] = ora_getcolumn($cursor,1);
$guestbook[$i][2] = ora_getcolumn($cursor,2);
$guestbook[$i][3] = ora_getcolumn($cursor,3);
$guestbook[$i][4] = ora_getcolumn($cursor,4);
$guestbook[$i][5] = ora_getcolumn($cursor,5);
$guestbook[$i][6] = ora_getcolumn($cursor,6);
$guestbook[$i][7] = ora_getcolumn($cursor,7);
$i++;
}
ora_close($cursor);
ora_logoff($handle);
在初始化后,就可以連上 oracle 資料庫,將留言的資料取出放在 $guestbook陣列中。取得資料后,就趕緊將資料庫關閉,再來處理 $guestbook 陣列的資料了。
if ($query_string!="") {這一段程序判斷是要顯示第幾頁,內定值是顯示第一頁。要顯示第三頁的頁面,需要使用 http://xxxxxx/index.php?2 的格式,也就是傳入 $query_string,余類推。之后的數行程序,都是用來處理顯示的頁數及筆數的資料。
$msgnum=20; // 每頁二十筆
要改變每頁的顯示筆數,可以改 $msgnum 變數。程序的內定值為 20 筆。
for ($i=$start; $i<$end; $i++) {這一段程序就是真正顯示留言資料給使用者看的程序了。利用 for 回圈,將$guestbook 陣列的資料按照設定的頁數取出,顯示給使用者看。值得一提的是,若看留言的機器 ip 為 $webmasteriparray 變數陣列中的一個元素的話,則會在留言者的匿稱后顯示 "刪除本篇!!" 的字串,供管理人員刪除不當留言。
以下即為刪除留言的程序。
<?php
file://---------------------------
// 留言刪除程序 erase.php
// author: wilson peng
// copyright (c) 2000
file://---------------------------
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("[email protected]","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);
$query="update guestbook set flag='0' where
serial='".$query_string."'";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);
header("location: ./index.php");
?>
其實這個程序很單純,只要打開 oracle 資料庫,將欲刪除的序號那筆資料的flag 欄位設成 0 就可以了,不用將資料真的從資料庫上移除。
新聞熱點
疑難解答