在這里介紹的范例,是簡單的列示所有留言的內容。供使用者可以一次看到多筆留言的資料。系統的后端存放留言是用 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,
primary 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("[email protected]","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);
header("location: ./index.php");
exit;
} else {
?>
<html>
<head>
<title>填寫留言</title>
</head>
<body bgcolor=ffffff>
<form method=post action="<? echo $php_self; ?>">
<table border=0 cellpadding=2 width=395>
<tr>
<td nowrap><font color=004080>代號小名</font></td>
<td width=20%><input type=text name=alias size=8></td>
<td nowrap><font color=004080>電子郵件</font></td>
<td width=50%><input type=text name=email size=18></td>
</tr>
<tr>
<td nowrapvalign=top><font color=004080>內容</font></td>
<td width=80% colspan=3><textarea rows=5 name=msg
cols=33></textarea></td>
</tr>
<tr>
<td width=100% colspan=4 align=center>
<input type=submit value="送出留言">
<input type=reset value="擦掉留言">
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
}
?>
上面的程序在執行時,先檢查變數 alias 和 msg 是否有資料,若無資料則送出填寫留言的表格到使用者端,供使用者填寫留言。
若使用者填好留言,按下 "送出留言" 的按鈕后,則執行程序的前半部份。
程序大概分成五部份
1.. 設定 oracle 需要的環境變數
2.. 連上 oracle 資料庫
3.. 整理資料,送入 oracle 中
4.. 結束與 oracle 的連線
5.. 結束程序,顯示最新的留言資料
在設定 oracle 環境的部份,用 php 的函式 putenv(),可設定作業系統層的環境變數。要使用中文要記得加入下面這行
putenv("nls_lang=american_taiwan.zht16big5");
之后就使用 oracle 函式庫的功能: ora_logon() 等等。詳見 oracle 資料庫函式庫。利用這個函式庫,可以很輕易的操作 oracle 資料庫。
新聞熱點
疑難解答