php教程 php手册 实例学习PHP之留言程序

实例学习PHP之留言程序

Jun 21, 2016 am 09:02 AM
cursor gt lt oracle

 

大部份的网站,都会考虑到和用户之间的互动关系。这时,用留言板的功能,可让用户留下到此一游,或者是一些和网站的互动信息。
在设计上,可以很简单的只留下用户的短篇留言,也可以设计到依性质分门别类很复杂的 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,
msgdatedate not null,
email varchar2(1024) null,
msg varchar2(2000) not null,
flagchar(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 留言数据表中。若要配置用户认证功能,可在程序刚开始时检查,发留言者就可以确认身份,而读取留言就不必身份检查。这种配置可以防止不当发言,却又不会让留言功能只有少数人使用。


//---------------------------
//
新增留言程序 addmsg.php
// Author: Wilson Peng
// Copyright (C) 2000
//---------------------------
//
//
可自行在这儿加入身份检查功能
//
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 {
?>


填写留言

















代号小名 电子邮件
内容

送出留言">
擦掉留言
">




}
?>


上面的程序在执行时,先检查变量 alias msg 是否有资料,若无资料则送出填写留言的表格到用户端,供用户填写留言。

若用户填好留言,按下 "送出留言" 的按钮后,则执行程序的前半部份。

程序大概分成五部份

配置 Oracle 需要的环境变量
连上 Oracle 数据库
整理资料,送入 Oracle
结束与 Oracle 的连接
结束程序,显示最新的留言资料
在配置 Oracle 环境的部份,用 PHP 的函数 putenv(),可配置操作系统层的环境变量。要使用中文要记得加入下面这行

putenv("NLS_LANG=american_taiwan.zht16big5");

之后就使用 Oracle 函数库的功能: ora_logon() 等等。详见 Oracle 数据库函数库。利用这个函数库,可以很轻易的操作 Oracle 数据库。

再来就是整理资料,以便置入 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。让用户看到他的新留言,就完成了留言的步骤。

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





본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Oracle 데이터베이스 로그는 얼마나 오래 보관됩니까? Oracle 데이터베이스 로그는 얼마나 오래 보관됩니까? May 10, 2024 am 03:27 AM

Oracle 데이터베이스 로그의 보존 기간은 다음을 포함한 로그 유형 및 구성에 따라 다릅니다. 재실행 로그: "LOG_ARCHIVE_DEST" 매개변수로 구성된 최대 크기에 의해 결정됩니다. 보관된 리두 로그: "DB_RECOVERY_FILE_DEST_SIZE" 매개변수로 구성된 최대 크기에 따라 결정됩니다. 온라인 리두 로그: 보관되지 않고 데이터베이스를 다시 시작하면 손실되며 보존 기간은 인스턴스 실행 시간과 일치합니다. 감사 로그: "AUDIT_TRAIL" 매개변수로 구성되며 기본적으로 30일 동안 보관됩니다.

Oracle 데이터베이스 시작 단계의 순서는 다음과 같습니다. Oracle 데이터베이스 시작 단계의 순서는 다음과 같습니다. May 10, 2024 am 01:48 AM

Oracle 데이터베이스 시작 순서는 다음과 같습니다. 1. 전제 조건을 확인합니다. 3. 데이터베이스 인스턴스를 시작합니다. 5. 데이터베이스에 연결합니다. . 서비스를 활성화합니다(필요한 경우). 8. 연결을 테스트합니다.

오라클에는 얼마나 많은 메모리가 필요합니까? 오라클에는 얼마나 많은 메모리가 필요합니까? May 10, 2024 am 04:12 AM

Oracle에 필요한 메모리 양은 데이터베이스 크기, 활동 수준 및 필요한 성능 수준(데이터 버퍼 저장, 인덱스 버퍼, SQL 문 실행 및 데이터 사전 캐시 관리에 필요)에 따라 다릅니다. 정확한 양은 데이터베이스 크기, 활동 수준 및 필요한 성능 수준에 따라 달라집니다. 모범 사례에는 적절한 SGA 크기 설정, SGA 구성 요소 크기 조정, AMM 사용 및 메모리 사용량 모니터링이 포함됩니다.

Oracle 데이터베이스 서버 하드웨어 구성 요구 사항 Oracle 데이터베이스 서버 하드웨어 구성 요구 사항 May 10, 2024 am 04:00 AM

Oracle 데이터베이스 서버 하드웨어 구성 요구 사항: 프로세서: 기본 주파수가 2.5GHz 이상인 멀티 코어, 대규모 데이터베이스의 경우 32개 이상의 코어가 권장됩니다. 메모리: 소규모 데이터베이스의 경우 최소 8GB, 중간 크기의 경우 16~64GB, 대규모 데이터베이스 또는 과도한 작업 부하의 경우 최대 512GB 이상. 스토리지: SSD 또는 NVMe 디스크, 중복성 및 성능을 위한 RAID 어레이. 네트워크: 고속 네트워크(10GbE 이상), 전용 네트워크 카드, 지연 시간이 짧은 네트워크. 기타: 안정적인 전원 공급 장치, 이중 구성 요소, 호환 가능한 운영 체제 및 소프트웨어, 열 방출 및 냉각 시스템.

오라클에서 dbf 파일을 읽는 방법 오라클에서 dbf 파일을 읽는 방법 May 10, 2024 am 01:27 AM

Oracle은 다음 단계를 통해 dbf 파일을 읽을 수 있습니다. 외부 테이블을 만들고 dbf 파일을 참조하여 데이터를 Oracle 테이블로 가져옵니다.

Oracle 데이터베이스를 사용하는 데 필요한 메모리 양 Oracle 데이터베이스를 사용하는 데 필요한 메모리 양 May 10, 2024 am 03:42 AM

Oracle 데이터베이스에 필요한 메모리 양은 데이터베이스 크기, 작업 부하 유형 및 동시 사용자 수에 따라 다릅니다. 일반 권장 사항: 소형 데이터베이스: 16~32GB, 중형 데이터베이스: 32~64GB, 대형 데이터베이스: 64GB 이상. 고려해야 할 다른 요소로는 데이터베이스 버전, 메모리 최적화 옵션, 가상화 및 모범 사례(메모리 사용량 모니터링, 할당 조정)가 있습니다.

Oracle 예약 작업은 하루에 한 번 생성 단계를 실행합니다. Oracle 예약 작업은 하루에 한 번 생성 단계를 실행합니다. May 10, 2024 am 03:03 AM

Oracle에서 하루에 한 번 실행되는 예약된 작업을 생성하려면 다음 세 단계를 수행해야 합니다. 작업을 생성합니다. 작업에 하위 작업을 추가하고 해당 일정 표현식을 "INTERVAL 1 DAY"로 설정합니다. 작업을 활성화합니다.

Oracle 데이터베이스에는 얼마나 많은 메모리가 필요합니까? Oracle 데이터베이스에는 얼마나 많은 메모리가 필요합니까? May 10, 2024 am 02:09 AM

Oracle 데이터베이스 메모리 요구 사항은 데이터베이스 크기, 활성 사용자 수, 동시 쿼리, 활성화된 기능 및 시스템 하드웨어 구성 등의 요소에 따라 달라집니다. 메모리 요구 사항을 결정하는 단계에는 데이터베이스 크기 결정, 활성 사용자 수 추정, 동시 쿼리 이해, 활성화된 기능 고려 및 시스템 하드웨어 구성 검사가 포함됩니다.

See all articles