📄 5.4.php.htm
字号:
<font color="#0000BB">putenv</font><font color="#007700">(</font><font color="#DD0000">"NLS_LANG=american_taiwan.zht16big5"</font><font color="#007700">);</font><p>
之后就使用 Oracle 函数库的功能: <a href="function.php-ora_logon.htm" alt="function.php?ora_logon">ora_logon()</a> 等等。详见 <a href="group.php-39.htm" alt="group.php?39">Oracle 数据库函数库</a>。利用这个函数库,可以很轻易的操作 Oracle 数据库。<p>
再来就是整理资料,以便置入 Oracle 数据库中<p>
<font color="#0000BB">$serial</font><font color="#007700">=</font><font color="#0000BB">md5</font><font color="#007700">(</font><font color="#0000BB">uniqid</font><font color="#007700">(</font><font color="#0000BB">rand</font><font color="#007700">()));</font><br>
<font color="#0000BB">$ref</font><font color="#007700">=</font><font color="#DD0000">""</font><font color="#007700">;</font><br>
<font color="#0000BB">$id</font><font color="#007700">=</font><font color="#0000BB">$PHP_AUTH_USER</font><font color="#007700">;</font><br>
<font color="#0000BB">$ip</font><font color="#007700">=</font><font color="#0000BB">$REMOTE_ADDR</font><font color="#007700">;</font><br>
<font color="#0000BB">$msg</font><font color="#007700">=</font><font color="#0000BB">base64_encode</font><font color="#007700">(</font><font color="#0000BB">$msg</font><font color="#007700">);</font><br>
<font color="#0000BB">$flag</font><font color="#007700">=</font><font color="#DD0000">"1"</font><font color="#007700">;</font><br>
<font color="#0000BB">$query</font><font color="#007700">=</font><font color="#DD0000">"INSERT into guestbook(serial, ref, id, alias, ip, msgdate, email, msg, flag) values('$serial', '$ref', '$id', '$alias', '$ip', sysdate, '$email', '$msg', '$flag')"</font><font color="#007700">;</font><p>
$serial 变量为独一无二的字符串,程序先随机数产生独特的字符串,再用 md5 编码,将字符串弄乱,形成类似哈稀处理后的无意义字符串。由于字符串长,又变得很乱,可防止用户,尤其是黑客或飞客利用序号来戳系统。<p>
$ref 变量目前是无效的。$id 变量为用户认证用,若在程序开始处有加入用户认证的程序,则 $PHP_AUTH_USER 会变成用户的帐号,传入 $id 变量中。<p>
至于用户写的字符串,为了防止数据库或处理时的复杂性甘脆将它用 BASE64 编码。可以让中文字的奇怪字符一字消失,当然这是锯箭法,不过对 Web 程序而言,执行快速、修改方便才是最重要的,实在没有必要再浪费精力去处理这些中文的冲码问题了。值得注意的是使用 BASE64 编码,会让字符串膨胀大约 1/3,若数据库的储存空间有限,可能就不适合用这个方法了,话又说回来,现在硬碟便宜,随便就是十几 GB 以上,应该不会考虑数据库空间有限的问题才对。<p>
最后,将变量整理成 $query 字符串,供数据库执行 SQL 指令使用就可以了。<p>
<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;</font><br>
<font color="#0000BB">ora_exec</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">);</font><br>
<font color="#0000BB">ora_close</font><font color="#007700">(</font><font color="#0000BB">$cursor</font><font color="#007700">);</font><br>
<font color="#0000BB">ora_logoff</font><font color="#007700">(</font><font color="#0000BB">$handle</font><font color="#007700">);</font><p>
要执行 Oracle 的 SQL 指令前,要先经过 parse 的步骤。若在前面加上 @ (如: @ora_prase();),可以不让用户看到错误信息。在执行 query 指令后,就可以关闭与 Oracle 之间的连接了。<p>
<font color="#0000BB">Header</font><font color="#007700">(</font><font color="#DD0000">"Location: ./index.php"</font><font color="#007700">);<br>
exit;</font><p>
这二行让浏览器重定向到 index.php。让用户看到他的新留言,就完成了留言的步骤。<p>
之后来看看留言的内容显示程序。<p>
<div align=center><table border=1 bgcolor=ffe0e0><tr><td>
<font color="#000000">
<html>
<br><head>
<br><meta content="text/html; charset=gb2312" http-equiv=Content-Type>
<br><title>留言板</title>
<br></head>
<br><body bgcolor=ffffff>
<br><font color="#0000BB"><?php
<br></font><font color="#FF8000">//---------------------------
<br>// 留言显示程序 index.php
<br>// Author: Wilson Peng
<br>// Copyright (C) 2000
<br>//---------------------------
<br>
<br></font><font color="#0000BB">$WebmasterIPArray </font><font color="#007700">= array(
<br> </font><font color="#DD0000">"10.0.1.30"</font><font color="#007700">, </font><font color="#FF8000">// 管理人员甲的机器 IP
<br> </font><font color="#DD0000">"10.0.2.28" </font><font color="#FF8000">// 管理人员乙的机器 IP
<br></font><font color="#007700">);
<br>
<br></font><font color="#0000BB">$WebmasterIP</font><font color="#007700">=</font><font color="#0000BB">false</font><font color="#007700">;
<br>for (</font><font color="#0000BB">$i</font><font color="#007700">=</font><font color="#0000BB">0</font><font color="#007700">; </font><font color="#0000BB">$i</font><font color="#007700"><</font><font color="#0000BB">Count</font><font color="#007700">(</font><font color="#0000BB">$WebmasterIPArray</font><font color="#007700">); </font><font color="#0000BB">$i</font><font color="#007700">++) {
<br> if (</font><font color="#0000BB">$REMOTE_ADDR </font><font color="#007700">== </font><font color="#0000BB">$WebmasterIPArray</font><font color="#007700">[</font><font color="#0000BB">$i</font><font color="#007700">]) </font><font color="#0000BB">$WebmasterIP</font><font color="#007700">=</font><font color="#0000BB">true</font><font color="#007700">;
<br>}
<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">"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">);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -