欢迎光临
我们一直在努力

带Oracle数据库分页显示功能的留言簿(2)-PHP教程,数据库相关

建站超值云服务器,限时71元/月

再来就是整理资料,以便置入 oracle 资料库中

$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)”;

  $serial 变数为独一无二的字串,程序先乱数产生独特的字串,再用 md5 编码,将字串弄乱,形成类似杂凑处理后的无意义字串。由于字串长,又变得很乱,可防止使用者,尤其是骇客或飞客利用序号来戳系统。

  $ref 变数目前是无效的。$id 变数为使用者认证用,若在程序开始处有加入使用者认证的程序,则 $php_auth_user 会变成使用者的帐号,传入 $id 变数中。

  至于使用者写的字串,为了防止资料库或处理时的复杂性甘脆将它用 base64 编码。可以让中文字的奇怪字元一字消失,当然这是锯箭法,不过对 web 程序而言,执行快速、修改方便才是最重要的,实在没有必要再浪费精力去处理这些中文的冲码问题了。值得注意的是使用 base64 编码,会让字串膨胀大约 1/3,若资料库的储存空间有限,可能就不适合用这个方法了,话又说回来,现在硬碟便宜,随便就是十几 gb 以
上,应该不会考虑资料库空间有限的问题才对。

  最后,将变数整理成 $query 字串,供资料库执行 sql 指令使用就可以了。

ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);

  要执行 oracle 的 sql 指令前,要先经过 parse 的动作。若在前面加上 @ (如: @ora_prase();),可以不让使用者看到错误讯息。在执行 query 指令后,就可以关闭与 oracle 之间的连线了。

header(“location: ./index.php”);
exit;

  这二行让浏览器重导到 index.php。让使用者看到他的新留言,就完成了留言的动作。

  之后来看看留言的内容显示程序。

<html>
<head>
<meta content=”text/html; charset=gb2312″
http-equiv=content-type>
<title>留言版</title>
</head>
<body bgcolor=ffffff>
<?php
file://—————————
// 留言显示程序 index.php
// author: wilson peng
// copyright (c) 2000
file://—————————

$webmasteriparray =
ay(
“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;
}

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);
$gu
estbook[$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 “<a href=addmsg.php>新增留言….</a><p>\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.”<a
href=index.php?”.($page-1).”><上页</a> – “;
$pagestr=$pagestr.”[第 “;
for ($i=0; $i<$totalpage; $i++)

if ($i!=$page)

$pagestr = $pagestr.”<a href=index.php?$i>”.($i+1).”</a> “;
} else

$pagestr = $pagestr.($i+1).” “;
}
}
$pagestr=$pagestr.” 页] “;
if ($page<($totalpage-1)) $pagestr=$pagestr.”- <a
href=index.php?”.($page+1).”>下页></a> “;

$pagestr=”<div align=center>$pagestr</div>”;
echo “<p>”.$pagestr.”<hr><p>\n”;

for ($i=$start; $i<$end; $i++)

echo “<p><hr><p>\n”;
echo “<p>\n<font color=e06060>”.$guestbook[$i][5].”</font>
  “;
if ($guestbook[$i][6]!=””) echo “<a
href=mailto:”.$guestbook[$i][6].”>”;
echo “<strong>”.$guestbook[$i][3].”</strong>”;
if ($guestbook[$i][6]!=””) echo “</a>”;
echo “<br>\n”;
if ($webmasterip) echo “<a
href=erase.php?”.$guestbook[$i][0].”>删除本篇!!</a> (“.$guestbook[$i][2].”)
  “;
echo “<font size=-1 color=c0c0c0>from:
“.$guestbook[$i][4].”</font><p>\n”;
$msg=base64_decode($guestbook[$i][7]);
$msg=nl2br($msg);
echo $msg;
echo “<p>\n”;
}

echo “<p><hr><p>\n”;
echo $pagestr;

?>
</body>
</html>

  在显示留言的部份,考虑到留言内容若很多,加上网路慢的话,可能会让使用者在线路慢的时候拖累整个资料库,因此,尽快的连上资料库,取得需要的资料后,马上关闭资料库,再慢慢送给使用者,应是最好的对策。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 带Oracle数据库分页显示功能的留言簿(2)-PHP教程,数据库相关
分享到: 更多 (0)