荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (LinuxProgrammer), 信区: Linux
标  题: [转载] [转寄] PHP与MySQL建构强力网站               ...(转寄)
发信站: BBS 荔园晨风站 (Sun Dec 10 10:00:52 2000), 站内信件

【 以下文字转载自 georgehill 的信箱 】
【 原文由 georgehill.bbs@fb2000.dhs.org 所发表 】
寄信人: deardragon. (deardragon.bbs@bbs.whnet.edu.cn), 信区: Linux
标  题: [转寄] PHP与MySQL建构强力网站                 flier
发信站: 快意灌水站 (2000年12月09日15:27:10 星期六), 站外信件
来  源: from bbs.whnet.edu.cn (bbs.whnet.edu.cn [202.112.20.132])

发信人: default (大花猫), 信区: WWW
标  题: PHP与MySQL建构强力网站
发信站: 武汉白云黄鹤站 (Thu Mar 23 02:26:34 2000), 站内信件


PHP专题文章 - 类型:原创 - 作者:clinuxworld 阅读人数: 336 人
整理编辑:中国PHP联盟
PHP与MySQL建构强力网站
来源:逍遥织网
前言
目前全世界使用Linux来架设的网站呈现爆炸性的成长,甚至已经影响到 Microsoft的
Windows NT,之所以让 Linux 急速窜起的原因则是 Linux 的 Open Source 精神与其系
统的
稳定效能。
Linux 上一般最普遍采用的 Web server 是名震江湖的 Apache,Apache 是由一群玩家
们所
设计,是所谓的 Open Source Software,也就是表示Apache 是免费并且自由开放其原

码的,它的设定简单并且效能不错,根据 http://www.netcraft.com/ 的统计,截至 1
999 年
8 月的结果,Apache 已经占有整个 Web server 市场的 55%,领先 Microsoft 的 22%

对於一个每天数万浏览人次的中型网站来说,Linux 与Apache 的组合已经足以担其重
任。
概要说明
一个网站若是只有 Web server 是没有多大用处的,其後必定有许多大量的资料库待呈

现给浏览者, 因此如何管理成堆的资料则是另一重点,所幸电脑专家们早在数十年前
就已经发明了一种资料库来储存、 查询、管理、分类大量资料,它就叫做关连式资料
库(Relational DataBase), 而使用者与关连式资料库之间的沟通桥梁我们称之为 SQL
 资
料库查询语言(Structured Query Language), 只要善用 SQL 查询语言,我们便可以轻
松且
快速地抓取出资料库中我们想要的资料。 本次专栏我们将介绍一个相当适用於重量级
应用场合的资料库软体 -- MySQL。MySQL 的执行速度相当的快,并且也放出了符合所
谓 GPL 的版本。
有了 Web server 与资料库之後,我们还需要一个两者之间的桥梁,让网页上浏览者的

查询命令能够下达资料库, 同时也让资料库的资料内容能够放上网页。在这个方面有
许多工具可以作得到,像 Java 就可以, 但是最广为使用的便是 CGI,写过 CGI 的读

都知道设计 CGI 一向是件麻烦事,不但除错不方便, 而且设计起来相当不直接,目前

写 CGI 最常见的语言是 C 语言以及 Perl 语言。 最近这两年中拜 Windows NT 与 II
S 之
赐, Microsoft 的 ASP (Active Server Page) 大行其道, 成为网页设计的好工具,
但是事
实上 Unix 的世界已然悄悄地产生了一个功能效率上都不输、 甚至凌驾 ASP 的新工
具,它叫做 PHP (Personal Homepage),PHP 现在已经出现在许多大型网站, 成为网页

设计的最佳选择。PHP 能够取代原本 CGI 的功能,执行速度也相当快,并且能够与几
乎所有的资料库相连接。
以下我们便由浅入深地介绍如何以 Linux + Apache + PHP + MySQL 来架设一个网站,
 并
兼谈架站时会遇到的一些问题,在解说的过程中,我会以我所架设的 http://linuxfab
.cx/
作为实例解说,以方便读者了解,以下就分项说明 :
Domain Name 的申请与 DNS(Domain Name Server) 的架设
SQL 查询语言与关连式资料库
PHP 网页设计语言
这叁个部份,让各位对如何以 Linux + Apache + PHP + MySQL 来架设网站能够有个最

本而整体性的了解。
Domain Name 的申请与 DNS 的架设
一个网站当然要有一个名字,也就是所谓的 domain name,这一点我想每个人都应该知

道的, 像是 www.chinatimes.com.tw 或是 www.nctu.edu.tw 等就是 domain name。
申请这样
在 .tw (台湾) 之下的 domain 可以经由 Hinet、Seednet 或是经由 TWNIC 来申请,
若是申
请以 .com、.org、.net 等这种国际性的 domain name 时,则必须在国外申请, 不过
由於
网际网路与信用卡的发达,现在已经出现很多可以直接在网路上申请 domain name, 并

且以信用卡支付的服务,通常在一两天之内便可以办好,在这一点国内的申请就稍嫌
烦琐, 比不上国外的快速服务。以 LinuxFab 为例,其 domain name 是 linuxfab.cx
,.cx 是
太平洋上的一个小岛 □ Christmas island 的网域,当初之所以申请这样的网域最主要

因为它价格便宜, 并且可以在网路上申请以及使用信用卡支付费用,另外也不必接受
身分检查的繁复手续。 如果你想申请一个与众不同的 domain name,那麽是可以考虑
.cx 的。
申请了 domain name,之後,上游的 DNS 会允许你自己的 DNS 向其传送 domain name

料,以 LinuxFab 为例,上游的 DNS 为 nic.cx,而 xxx.linuxfab.cx 的 domain nam
e 便可以透
过你所架设的 DNS 来设定, 并且将其传送给 nic.cx,让你所设定的 domain name 能
够为
别人所查询到。
Domain Name 的申请与 DNS 的架设
DNS 的运作机制相当地有趣,我们以 abc.def.ghi 为例,往 abc 的方向称之为下游,
 往
ghi 的方向称之为上游,所以 abc.def.ghi 为 .def.ghi 的下游, 而 def.ghi 又为
.ghi 的下游,
所以 .ghi 为 def.ghi 的上游,而 .def.ghi 又为 abc.def.ghi 的上游, 假设某个人
所使用的
domain name 为 jkl.mno.ghi,他想要查询 abc.def.ghi 的 ip 时, 系统会询问其本
身的上游,
也就是 .mno.ghi 的 DNS,若找不到资料,则再向其上游询问, 也就是 .ghi ,此时
.ghi
的 DNS 发现了 def.ghi 的资料,於是往其下游询问, 也就是 def.ghi 的 DNS,若没
有找
到资料,则再询问其下游,也就是 abc.def.ghi, 不过此例中,def.ghi 的 DNS 已经
找到
了所属的 abc.def.ghi 的资料,於是开始沿着原路径一路传回。
在任何一台 DNS查询到了 domain name 以及其对应的 ip 之後,会存入该 DNS 的 cac
he
(快取) 中,这样下一次若是再遇到查询该 domain name 时, 便可直接从 cache 中读
取,
而不必重复同样的漫长查询动作了。
omain Name 的申请与 DNS 的架设
接下来该来介绍一下 DNS 的设定,前面说过要管理自己网域以下的 domain name (以
LinuxFab来说便是 xxx.linuxfab.cx),必须自己设定 DNS(Domain Name Server),Lin
ux 上的
DNS 软体是一个名为 named 的程式以及包含 named.boot、named.hosts 以及 named.c
a 这几
个设定档,只要先设定好设定档之後, 再启动(执行) named 程式即可。
named.boot 是用来设定 DNS 所管辖的各个 domain name 所需的资料库档案, 一个 D
NS
可以管辖不同的网域,比如说我可以花钱买个 abc.cx 以及 def.cx 这两个网域,然後

上游的 DNS 指向同一个 DNS,不过一般来说,一个 DNS 通常都管理一个网域。以
linuxfab.cx 为例,named.boot 的内容为 :
directory /etc
primary linuxfab.cx named.hosts
primary 0.0.127.in-addr.arpa named.local
cache . named.ca
其中,第一行是表示资料库设定档所存放的目录,第二行是指 .linuxfab.cx 网域下的

domain name 所存放的档案,第叁行我们暂时不管它,第四行是指 DNS 的 cache 资料

放的档案。
omain Name 的申请与 DNS 的架设
接下来重头戏就是 named.hosts 的设定,以 linuxfab 为例,其内容如下 :
$ORIGIN linuxfab.cx.
@ IN SOA dns.linuxfab.cx. root.dns.linuxfab.cx. (
950710 ; Serial
21600 ; Refresh
7200 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns.linuxfab.cx.
localhost IN A 127.0.0.1
dns IN A 140.113.88.2
IN HINFO "X86 PC" "LINUX"
www IN A 140.113.88.7
IN HINFO "X86 PC" "MITUX SVR4MP"
LINUXFAB.CX. IN A 140.113.88.7
IN HINFO "X86 PC" "MITUX SVR4MP"
其中 dns.linuxfab.cx 是指 .linuxfab.cx 这个网域的 DNS,我们从内容可以看出我们
已经设
定了 www.linuxfab.cx 为 140.113.88.7,至於最後一行却采用了大写的 LINUXFAB.CX
, 这
样的设定可以使得网域名称本身同时也成为该 ip 所在的 host 的 domain name。 也就
是说
linuxfab.cx 本身是一个网域名称,所有在其下的 host 的 domain name 应该都是
xxx.linuxfab.cx,但是这样的设定使得 linuxfab.cx 这个名字本身也可拿来作为 hos
t 的
domain name。
在设定完 named.boot 与 named.hosts 之後,我们只需要执行 named 这个程式就完成

DNS 整个设定与启动的动作,在属於该网域内的 domain name被查询时,named 会将其

往上游传送。
特别值得注意的是,当变动了 domain name 的设定时,named 必须要重新执行, 然而

界各地的 DNS 却并不会立刻就得知你的新设定,这是因为 DNS 机制是采用分散式的
处理方式, 一层负责一层,新的设定要生效至少也需要一至两叁天, 这时间的长短有

部份可以由 named.hosts 的上方那五行数字来决定。
用 SQL 查询语言来操作关连式资料库
设定好了 DNS 之後,我们来谈谈如何利用 SQL 查询语言来操作关连式资料库, SQL
的用法很简单(否则它就不叫 simple query language 了),不过在介绍之前, 我们先
说明一
下如何安装 MySQL :
1.取得并解开 mysql-3.22.25.tgz : tar xvfz mysql-3.22.25.tgz
2.设定使用 Big5 字集 : configure □with-charset=big5
3.编译 : make
4.安装 : make install
5.建立基本资料库 : ./script/mysql_install_db □force
6.启动资料库 : mysql.server start
用 SQL 查询语言来操作关连式资料库
MySQL 里头提供了一个非常方便的互动式 SQL 操作环境,这只程式就叫做 mysql,使
用者可以在里面直接输入 SQL 指令,如果发生指令太长无法在一行内输入完时, 可以

直接按下 enter 到下一行继续输入,只要记得在每行指令後面加上分号, 再按下 ent
er
即可输出该 SQL 指令,现在请以 root 身分进入该环境 :
mysql □u root
接下来我们便以这个环境来输入 SQL 指令并且验证 SQL 的强大威力,我们介绍四个最

常见的资料库操作 : 建立资料库、建立表格、输入一笔资料、查询资料。
SQL 查询语言来操作关连式资料库 : 建立资料库
一个资料库中可以包含许多表格,这就像是一个公司内部有很多的资料, 有薪资资料
、考绩资料、职位资料等等、而这些都是属於同一个资料库的, 在建立这些表格之
前,应该先建立该资料库。
建立资料库的方式很简单,指令格式如下 :
create database 资料库名称
比如说我们开始建立公司资料库,输入的指令就可以是 :
create database MyComp;
当你建立了许多资料库之後,你必须先指定使用哪个资料库, 才可以针对该资料库进
行更进一步的操作,指定使用资料库的指令格式如下 :
use 资料库名称
我们现在要使用 MyComp,所以输入
use MyComp
用 SQL 查询语言来操作关连式资料库 : 建立表格
有了资料库之後,我们便可以建立属於该资料库下的表格,指令格式如 下 :
create table 表格名称 (栏位1 资料定义, 栏位2 资料定义, . . .)
其中资料形态有很多,其中最常见的有 :
儭鮪t(x) : x 位数的整数
儭鮡al(x) : x 位数的实数
儭鮤ar(x) : x 个字元的字串
儭鮡xt : 不限长度的字串
冾豠te : 日期 (年/月/日)
儭鮥me : 时间 (时/分/秒)
冾豠tetime : 日期+时间
比如说要建立一个人事薪资资料库表格,我们可以建立如下 :
create table SalaryDB (name char(8), age int(3), address text, salary int(8)
)
SQL 查询语言来操作关连式资料库 : 输入资料
在表格中输入一笔资料的指令格式如下 :
insert into 表格名称 values(栏位1资料, 栏位2资料, . . .)
比如刚才的 SalaryDB 中,我们输入叁笔员工资料 :
insert into SalaryDB values('小黄', 28, '山上', 20000)
insert into SalaryDB values('小李', 26, '山下', 25000)
insert into SalaryDB values('小红', 20, '海边', 24000)
用 SQL 查询语言来操作关连式资料库 : 查询资料
SQL 查询资料的威力强大,指令格式如下 :
select 栏位, 栏位, … from 表格 where 查询条件
[ex1] 比如说我要查询资料库中年龄小於 27 岁的员工姓名、年龄与薪水 :
select name, age, salary from SalaryDB where age=23000
输出 :
name
Address
小红
海边
[ex3] 若要查询年龄小於 25 岁或者薪资大於 23000 元的员工所有资料 :
select * from SalaryDB where age23000
输出 :
name
age
address
salary
小李
26
山下
25000
小红
20
海边
24000
[ex4] 若要查询大於 25 岁的员工中,薪水最多为多少 :
select max(salary) from SalaryDB where age>25
输出 :
max(salary)
25000
[ex5] 若要查询共有多少位员工薪资超过 20000 元 :
select count(*) from SalaryDB where salary>20000
输出 :
count(*)
2
SQL 所提供的指令还有很多,在此只介绍最常用的,让各位能够轻松一窥 SQL 的堂
奥。
HP 网页设计语言
接下来我们来介绍 PHP 的安装与简单用法,Apache web server 提供了模组 (module)
 功
能,也就是让任何人可以扩充 Apache 的功能,PHP 事实上便是设计人 Ramus 发展的
Apache 模组,PHP 可以执行网页中所嵌入的 PHP 程式, 然後将程式的输出资料连同
原本的网页资料一起传送给浏览者。
在此,我们先介绍一下 PHP 的安装,由於 PHP 是 Apache 的一个模组, 因此两者必须

同时安装,我们以 Apache 1.3.4版与 PHP 3.0.7版为例,以下便是两者的安装过程 :
1.解开 apache : tar xvfz apache_1.3.4.tar.gz
2.解开 php : tar xvfz php-3.0.7.tar.gz
3.到 apache 目录下 : cd ~/ apache_1.3.4
4.设定 apache 组态(安装到 /usr/local/apache 下) : configure --prefix=/usr/lo
cal/apache
5.到 php 目录下 : cd ~/php-3.0.7
6.设定 php 组态(设定支援 mysql 资料库) : configure --with-mysql --with-apach
e=
../apache_1.3.4 --with-gd=../gd1.3 --enable-track-vars
7.编译 : make; make install
8.到 apache 下 : cd ~/php-3.0.7
9.再设定一次 apache 组态 : configure --prefix=/usr/local/apache --activate-m
odule=
src/modules/php3/libphp3.a
10.编译 : make;make install
11.到 php 目录下 : cd ~/php-3.0.7
12.拷贝 php 设定档 : cp php3.ini-dist /usr/local/lib/php3.ini
13.修改 apache 设定档(使得 .php3 副档名的档案可以被 php module 认得,并且被执
行)
在 httpd.conf 或 srm.conf 中加上 : AddType application/ x-httpd-php3 .php3
14.启动 httpd : /usr/local/apache/bin/apachectl start
PHP 的特点
PHP 的特点包含了 :
PHP 直接嵌入 html 档, 附档名改为 .php3 即可执行
跨平台(因为直接产生 标准 html 档,哪个平台或browser 当然没问题)
支援各家资料库,包含 MySQL, mSQL, Postgre, SyBase, Oracle, dBase, Informix,
当然
也支援 ODBC (所以自然也支援 M$ SQL)
它是 Open Source Software, 不花一毛钱
强大的字串处理以及档案处理能力
与 Apache 紧密结合,虽然是 script language,但是速度相当快
支援了一些物件导向的观念,类似 C++ 中的 Class
程式可动态载入执行
与 C 语言不同之处在於 :
PHP 只有单一资料形态,并且可以任意存为整数、实数或字串
PHP 没有 main 的观念,但有函数(function)的观念
PHP 使用 "." 来连接两字串
PHP 的所有变数名称皆必须以 $ 开头
当然在此无法说明 PHP 的完整介绍,但是希望以深入浅出的方式让读者能够对 PHP
有个简单的了解。
我们来看看一个小小的例子,下面的例子秀出 5 次 "hello x times" :
hello ".$t." times";
?>
PHP 的特点 : 复杂的例子
至於下一个范例就比较复杂了,我们利用写入档案的方式产生一个网页计数器, 程式
如下 :
下面的例子比较复杂,我们利用 for 回圈产生一个九九乘法表 :
";
for($y=1;$y";
echo "";
};
?>
最後一个例子,我们将先前的 SalaryDB [ex1] 用 PHP 来设计就是 :
";
for ($t=1;$t".$DBTrow[0].""; // 读取第 $t 笔资料的第 0 个栏位
echo "".$DBTrow[1].""; // 读取第 $t 笔资料的第 1 个栏位
echo "".$DBTrow[2].""; // 读取第 $t 笔资料的第 2 个栏位
};
echo "";
mysql_close($DB); // 关闭连线
?>
结论
利用 Apache、PHP 与 MySQL 叁方面的整合、网站可以产生无限创意,而这 一切都是
基於两大根基 : OpenSource 的开放分享精神与 Linux 的稳定效能。
事实上,所有读者们所看到的各大网站的酷炫功能诸如会员制、聊天室、电子报、 论
坛、设群功能、文章讨论系统等等全部都可以自己用 Apache、PHP 与 MySQL 建构在
Linux 上、至於效果如何就看各位的巧思如何发挥了。
----------------------------------------------------------------------------
----
Copyright ? 2000 N.Z.W Studio All rights reserved.

--
※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 202.114.20.123]
--
※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 210.38.240.158]
--
※ 转寄:·快意灌水站 fb2000.dhs.org·[FROM: 210.39.3.50]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店