当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP 留言簿(带Oracle数据库分页的显示功能)

PHP
PHP 执行系统外部命令 system() exec() passthru()
最新的php 文件上传模型,支持多文件上传
php 静态页面中显示动态内容
数据库查询记录php 多行多列显示
谈PHP生成静态页面分析 模板+缓存+写文件
PHP 各种排序算法实现代码
PHP nl2br函数 将换行字符转成 <br>
php 分页原理详解
Discuz 模板语句分析及知识技巧
php win下Socket方式发邮件类
怎样去阅读一份php源代码
建站常用13种PHP开源CMS比较
php xml留言板 xml存储数据的简单例子
PHP 开源AJAX框架14种
PHP 替换模板变量实现步骤
PHP has encountered an Access Violation at 7C94BD02解决方法
php 正则匹配函数体
php 文件夹删除、php清除缓存程序
php download.php实现代码 跳转到下载文件(response.redirect)
PHP类(Class)入门教程

PHP 留言簿(带Oracle数据库分页的显示功能)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 236 ::
收藏到网摘: n/a

  (摘自CCU新闻组,本来出处可能是台湾出版的一本关于PHP的书:PHP宝典)

大部份的网站,都会考虑到和使用者之间的互动关系。这时,用留言版的功能,可让使用者留下到此一游,或者是一些和网站的互动讯息。
在设计上,可以很简单的只留下使用者的短篇留言,也可以设计到依性质分门别类很复杂的 Web BBS 系统。当然,要如何打造一个属于自己网站的留言版,就端赖网站的性质以及 Web 网站开发人员的巧思了。

在这里介绍的范例,是简单的列示所有留言的内容。供使用者可以一次看到多笔留言的资料。系统的后端存放留言是用 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("user38@WWW","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&