留言显示程序index.php
// Author: Wilson Peng
// Copyright (C) 2000
//---------------------------
$WebmasterIPArray = array(
"10.0.1.30", //管理人员甲的机器IP
"10.0.2.28" //管理人员乙的机器IP
);
$WebmasterIP=false;
for ($i=0; $iif ($REMOTE_ADDR == $WebmasterIPArray[$i]) $WebmasterIP=true;
}
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);
$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);
echo "新增留言....
\n";
if ($QUERY_STRING!="") {
$page = $QUERY_STRING;
} else {
$page = 0;
}
$i=count($guestbook);
$msgnum=20; //每页二十条$start = $page * $msgnum;
$end = $start + $msgnum;
if ($end > $i) $end=$i;
$totalpage=$i/$msgnum;
$pagestr="";
if ($page>0) $pagestr=$pagestr."
$pagestr=$pagestr."[第";
for ($i=0; $iif ($i!=$page) {
$pagestr = $pagestr."".($i+1)." ";
} else {
$pagestr = $pagestr.($i+1)." ";
}
}
$pagestr=$pagestr."页] ";
if ($page下页> ";
$pagestr="
$pagestr";
echo "
".$pagestr."
\n";
for ($i=$start; $iecho "
\n";
echo "
\n".$guestbook[$i][5]." ";
if ($guestbook[$i][6]!="") echo "";
echo "".$guestbook[$i][3]."";
if ($guestbook[$i][6]!="") echo "";
echo "
\n";
if ($WebmasterIP) echo "删除本篇!! (".$guestbook[$i][2].") ";
echo "from: ".$guestbook[$i][4]."
\n";
$msg=base64_decode($guestbook[$i][7]);
$msg=nl2br($msg);
echo $msg;
echo "
\n";
}
echo "
\n";
echo $pagestr;
?>在显示留言的部份,考虑到留言内容若很多,加上网络慢的话,可能会让用户在线路慢的时候拖累整个数据库,因此,尽快的连上数据库,取得需要的资料后,马上关闭数据库,再慢慢送给用户,应是最好的对策。程序分成四部份初始化取数据库中的资料计算要显示的页数送出资料$WebmasterIPArray = array(
"10.0.1.30", //管理人员甲的机器IP
"10.0.2.28" //管理人员乙的机器IP
);
$WebmasterIP=false;
for ($i=0; $iif ($REMOTE_ADDR == $WebmasterIPArray[$i]) $WebmasterIP=true;
}
//之后初始化Oracle程序略显示程序和留言程序的初始化部份都差不多,但显示程序多加了一个功能,配置Webmaster的电脑。将Webmaster使用的IP Address加在$WebmasterIPArray数组变量中,可以在显示留言时,显示删除留言的字符串,方便处理不当的留言。$handle=ora_logon("user38@WWW","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!="") {
$page = $QUERY_STRING;
} else {
$page = 0;
}这一段程序判断是要显示第几页,默认值是显示第一页。要显示第三页的页面,需要使用http://xxxxxx/index.php?2的格式,也就是传入$QUERY_STRING,余类推。之后的数行程序,都是用来处理显示的页数及条数的资料。$msgnum=20; //每页二十条要改变每页的显示条数,可以改$msgnum变量。程序的默认值为20条。for ($i=$start; $iecho "
\n";
echo "
\n".$guestbook[$i][5]." ";
if ($guestbook[$i][6]!="") echo "";
echo "".$guestbook[$i][3]."";
if ($guestbook[$i][6]!="") echo "";
echo "
\n";
if ($WebmasterIP) echo "删除本篇!! (".$guestbook[$i][2].") ";
echo "from: ".$guestbook[$i][4]."
\n";
$msg=base64_decode($guestbook[$i][7]);
$msg=nl2br($msg);
echo $msg;
echo "
\n";
}这一段程序就是真正显示留言资料给用户看的程序了。利用for循环,将$guestbook数组的资料按照配置的页数取出,显示给用户看。值得一提的是,若看留言的机器IP为$WebmasterIPArray变量数组中的一个元素的话,则会在留言者的匿称后显示"删除本篇!!"的字符串,供管理人员删除不当留言。以下即为删除留言的程序。留言删除程序erase.php
// Author: Wilson Peng
// Copyright (C) 2000
//---------------------------
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);
$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就可以了,不用将资料真的从数据库上移除。