📄 5.4.php.htm
字号:
}</font><br>
<font color="#FF8000">// 之后初始化 Oracle 程序略</font><p>
显示程序和留言程序的初始化部份都差不多,但显示程序多加了一个功能,配置 Webmaster 的电脑。将 Webmaster 使用的 IP Address 加在 $WebmasterIPArray 数组变量中,可以在显示留言时,显示删除留言的字符串,方便处理不当的留言。<p>
<font color="#0000BB">$handle</font><font color="#007700">=</font><font color="#0000BB">ora_logon</font><font color="#007700">(</font><font color="#DD0000">"user38@WWW"</font><font color="#007700">,</font><font color="#DD0000">"iam3849"</font><font color="#007700">) or die;<br>
</font><font color="#0000BB">$cursor</font><font color="#007700">=</font><font color="#0000BB">ora_open</font><font color="#007700">(</font><font color="#0000BB">$handle</font><font color="#007700">);<br>
</font><font color="#0000BB">ora_commitoff</font><font color="#007700">(</font><font color="#0000BB">$handle</font><font color="#007700">);</font><p><font color="#007700">
</font><font color="#0000BB">$query</font><font color="#007700">=</font><font color="#DD0000">"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"</font><font color="#007700">;<br>
</font><font color="#0000BB">ora_parse</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">, </font><font color="#0000BB">$query</font><font color="#007700">) or die;<br>
</font><font color="#0000BB">ora_exec</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">);<br>
</font><font color="#0000BB">$i</font><font color="#007700">=</font><font color="#0000BB">0</font><font color="#007700">;<br>
while(</font><font color="#0000BB">ora_fetch</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">)) {<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">0</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">0</font><font color="#007700">);<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">1</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">1</font><font color="#007700">);<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">2</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">2</font><font color="#007700">);<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">3</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">3</font><font color="#007700">);<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">4</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">4</font><font color="#007700">);<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">5</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">5</font><font color="#007700">);<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">6</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">6</font><font color="#007700">);<br>
</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">7</font><font color="#007700">] = </font><font color="#0000BB">ora_getcolumn</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">,</font><font color="#0000BB">7</font><font color="#007700">);<br>
</font><font color="#0000BB">$i</font><font color="#007700">++;<br>
}<br>
</font><font color="#0000BB">ora_close</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">);<br>
</font><font color="#0000BB">ora_logoff</font><font color="#007700">(</font><font color="#0000BB">$handle</font><font color="#007700">);</font><p>
在初始化后,就可以连上 Oracle 数据库,将留言的资料取出放在 $guestbook 数组中。取得资料后,就赶紧将数据库关闭,再来处理 $guestbook 数组的资料了。<p>
<font color="#007700">if (</font><font color="#0000BB">$QUERY_STRING</font><font color="#007700">!=</font><font color="#DD0000">""</font><font color="#007700">) {<br>
</font><font color="#0000BB">$page </font><font color="#007700">= </font><font color="#0000BB">$QUERY_STRING</font><font color="#007700">;<br>
} else {<br>
</font><font color="#0000BB">$page </font><font color="#007700">= </font><font color="#0000BB">0</font><font color="#007700">;<br>
}</font><p>
这一段程序判断是要显示第几页,默认值是显示第一页。要显示第三页的页面,需要使用 http://xxxxxx/index.php?2 的格式,也就是传入 $QUERY_STRING,余类推。之后的数行程序,都是用来处理显示的页数及笔数的资料。<p>
<font color="#0000BB">$msgnum</font><font color="#007700">=</font><font color="#0000BB">20</font><font color="#007700">; </font><font color="#FF8000">// 每页二十笔</font><p>
要改变每页的显示笔数,可以改 $msgnum 变量。程序的默认值为 20 笔。<p>
<font color="#007700">for (</font><font color="#0000BB">$i</font><font color="#007700">=</font><font color="#0000BB">$start</font><font color="#007700">; </font><font color="#0000BB">$i</font><font color="#007700"><</font><font color="#0000BB">$end</font><font color="#007700">; </font><font color="#0000BB">$i</font><font color="#007700">++) {<br>
echo </font><font color="#DD0000">"<p><hr><p>\n"</font><font color="#007700">;<br>
echo </font><font color="#DD0000">"<p>\n<font color=e06060>"</font><font color="#007700">.</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">5</font><font color="#007700">].</font><font color="#DD0000">"</font> &nbsp; "</font><font color="#007700">;<br>
if (</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">6</font><font color="#007700">]!=</font><font color="#DD0000">""</font><font color="#007700">) echo </font><font color="#DD0000">"<a href=mailto:"</font><font color="#007700">.</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">6</font><font color="#007700">].</font><font color="#DD0000">">"</font><font color="#007700">;<br>
echo </font><font color="#DD0000">"<strong>"</font><font color="#007700">.</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">3</font><font color="#007700">].</font><font color="#DD0000">"</strong>"</font><font color="#007700">;<br>
if (</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">6</font><font color="#007700">]!=</font><font color="#DD0000">""</font><font color="#007700">) echo </font><font color="#DD0000">"</a>"</font><font color="#007700">;<br>
echo </font><font color="#DD0000">"<br>\n"</font><font color="#007700">;<br>
if (</font><font color="#0000BB">$WebmasterIP</font><font color="#007700">) echo </font><font color="#DD0000">"<a href=erase.php?"</font><font color="#007700">.</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">0</font><font color="#007700">].</font><font color="#DD0000">">删除本篇!!</a> ("</font><font color="#007700">.</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">2</font><font color="#007700">].</font><font color="#DD0000">") &nbsp; "</font><font color="#007700">;<br>
echo </font><font color="#DD0000">"<font size=-1 color=c0c0c0>from: "</font><font color="#007700">.</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">4</font><font color="#007700">].</font><font color="#DD0000">"</font><p>\n"</font><font color="#007700">;<br>
</font><font color="#0000BB">$msg</font><font color="#007700">=</font><font color="#0000BB">base64_decode</font><font color="#007700">(</font><font color="#0000BB">$guestbook</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">][</font><font color="#0000BB">7</font><font color="#007700">]);<br>
</font><font color="#0000BB">$msg</font><font color="#007700">=</font><font color="#0000BB">nl2br</font><font color="#007700">(</font><font color="#0000BB">$msg</font><font color="#007700">);<br>
echo </font><font color="#0000BB">$msg</font><font color="#007700">;<br>
echo </font><font color="#DD0000">"<p>\n"</font><font color="#007700">;<br>
}</font><p>
这一段程序就是真正显示留言资料给用户看的程序了。利用 for 循环,将 $guestbook 数组的资料按照配置的页数取出,显示给用户看。值得一提的是,若看留言的机器 IP 为 $WebmasterIPArray 变量数组中的一个元素的话,则会在留言者的匿称后显示 "删除本篇!!" 的字符串,供管理人员删除不当留言。<p>
以下即为删除留言的程序。<p>
<div align=center><table border=1 bgcolor=ffe0e0><tr><td>
<font color="#000000">
<font color="#0000BB"><?php<br></font><font color="#FF8000">//---------------------------<br>// 留言删除程序 erase.php<br>// Author: Wilson Peng<br>// Copyright (C) 2000<br>//---------------------------<br></font><font color="#0000BB">putenv</font><font color="#007700">(</font><font color="#DD0000">"ORACLE_SID=WWW"</font><font color="#007700">);<br></font><font color="#0000BB">putenv</font><font color="#007700">(</font><font color="#DD0000">"NLS_LANG=american_taiwan.zht16big5"</font><font color="#007700">);<br></font><font color="#0000BB">putenv</font><font color="#007700">(</font><font color="#DD0000">"ORACLE_HOME=/home/oracle/product/7.3.2"</font><font color="#007700">);<br></font><font color="#0000BB">putenv</font><font color="#007700">(</font><font color="#DD0000">"LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib"</font><font color="#007700">);<br></font><font color="#0000BB">putenv</font><font color="#007700">(</font><font color="#DD0000">"ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data"</font><font color="#007700">);<br></font><font color="#0000BB">putenv</font><font color="#007700">(</font><font color="#DD0000">"ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data"</font><font color="#007700">);<br><br></font><font color="#0000BB">$handle</font><font color="#007700">=</font><font color="#0000BB">ora_logon</font><font color="#007700">(</font><font color="#DD0000">"user38@WWW"</font><font color="#007700">,</font><font color="#DD0000">"iam3849"</font><font color="#007700">) or die;<br></font><font color="#0000BB">$cursor</font><font color="#007700">=</font><font color="#0000BB">ora_open</font><font color="#007700">(</font><font color="#0000BB">$handle</font><font color="#007700">);<br></font><font color="#0000BB">ora_commitoff</font><font color="#007700">(</font><font color="#0000BB">$handle</font><font color="#007700">);<br><br></font><font color="#0000BB">$query</font><font color="#007700">=</font><font color="#DD0000">"UPDATE guestbook set flag='0' where serial='"</font><font color="#007700">.</font><font color="#0000BB">$QUERY_STRING</font><font color="#007700">.</font><font color="#DD0000">"'"</font><font color="#007700">;<br></font><font color="#0000BB">ora_parse</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">, </font><font color="#0000BB">$query</font><font color="#007700">) or die;<br></font><font color="#0000BB">ora_exec</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">);<br><br></font><font color="#0000BB">ora_close</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">);<br></font><font color="#0000BB">ora_logoff</font><font color="#007700">(</font><font color="#0000BB">$handle</font><font color="#007700">);<br><br></font><font color="#0000BB">Header</font><font color="#007700">(</font><font color="#DD0000">"Location: ./index.php"</font><font color="#007700">);<br></font><font color="#0000BB">?><br></font><br></font>
</td></tr></table></div><p>
其实这个程序很单纯,只要打开 Oracle 数据库,将要删除的序号那笔资料的 flag 字段设成 0 就可以了,不用将资料真的从数据库上移除。
<p><hr size=1><br>如果你对此手册有任何问题,请到下面网址提问: <a href="www.web745.com">WEB开发知识库</a> (<a href="http://www.web745.com">www.web745.com</a>)<p>
</td></tr></table></div>
<p>
<div align=center>
<table border=0>
<tr>
<td>[ <a href="5.3.php.htm" alt="5.3.php">上一页</a>
</td>
<td> <a href="5.5.php.htm" alt="5.5.php">下一页</a>
]</td>
</tr>
</table>
</div><p><br><br>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -