繁体中文
设为首页
加入收藏
当前位置:程序开发首页 >> 其他开发语言 >> 用PHP增强UNIX/LINUX网站功能

用PHP增强UNIX/LINUX网站功能

2005-01-09 20:42:18  作者:zdg  来源:互联网  浏览次数:38  文字大小:【】【】【
简介:如果你是网络开发和维护人员,对ASP应该相当熟悉了。自从微软推出ASP技术后,由于其在建立动态网站方面的强大功能,很快得到了广泛的应用。但由于众所周知的原因,ASP只能用于微软自己的操作系统和服务...

如果你是网络开发和维护人员,对ASP应该相当熟悉了。自从微软推出ASP技术后,由于其

在建立动态网站方面的强大功能,很快得到了广泛的应用。但由于众所周知的原因,ASP只能用于

微软自己的操作系统和服务器系统。目前基于UNIX的网络系统仍然占据大多数;而LINUX操

作系统由于其免费提供和开放源代码很受欢迎,其市场占有率迅速上升,据说已达到了17%左右;

APACHE服务器始终是网络站点的主流服务器软件。PHP的出现和逐渐完善,对基于

UNIX/LINUX系统的网络开发人员来说,无疑是个好消息:我们不用再只能羡慕ASP的

易用性而遗憾PERL/C的复杂性了!

              一 PHP特点概述

  PHP全称为Personal Home Page,于1995开始发行使用,到1998年成为一个成熟的软

件产品。目前最新的版本为4.0,而常用的版本为3.0。PHP是用C语言编写而成,可运行于

UNIX/LINUX和WIN9X/NT下。

  PHP,是一种跨平台的服务器端嵌入式脚本技术。PHP页面是一种文本文件,

是在普通HTML页面文件中嵌入PHP脚本语句,由服务器解释和翻译成普通的HTML文

件,然后传送给客户端浏览器,这一点和ASP一样。

  PHP大量借用了C、JAVA、和PERL语言的语法,并加入了各种PHP自

己的特征,使WEB开发者能够写出快速的动态页面。

  PHP脚本语句段以“”为结束。“”之间的脚本

语句由服务器软件调用PHP脚本解释引擎解释后替换为普通的HTML脚本。

  笔者认为,PHP最强大也最有代表性的特点在于它的数据库层,它内置了对很多

数据库的支持,而不再需要特殊扩充,使得编写基于数据库的网页变得非常简单。目前所支持的数据库

有Oracle、Adabas D、Sybase、FilePro、mSQL、Velocis、MySQL、Informix、Solid、dBase、

ODBC、Unix、dbm、PostgreSQL、MS SQL SERVER等。针对每个数据库都有一组函数用于数据库访问和操

作,如对dBase数据库有dbase_create、dbase_open、dbase_close、dbase_pack、dbase_add_record、

dbase_delete_record、dbase_get_record、dbase_numfields、dbase_numrecords等函数,对MySQL有

mysql_close、mysql_connect、mysql_create_db、mysql_data_seek、mysql_dbname、mysql_db_query

等函数。

  同时,PHP还提供了一组图像函数,可以动态生成gif格式的图像数据流并输出到

客户端。

  此外,PHP还提供了对Socket、EMail、PDF文件、HIS(Hyperwave Information

Server)、IMAP、LDAP(Lightweight Directory Access Protocol)、文件上载、NIS等功能的支持。

              二 搭建PHP应用系统平台

  PHP可以运行于UNIX/LINUX+APACHE服务器系统或WIN9X+PWS服务器系统或WINNT+IIS服务器系统。

  下面以PWIN98+PWS4.0为例,搭建一个PHP学习和开发环境。

(一)下载PHP3 For WIN9X/NT

  到http://www.php.net,选择downloads,然后选择Download the PHP source code and Windows

distribution,选择一个下载的站点,然后选择 3.0.11 Win32 binary 就可以了。如果觉得麻烦,就

用http://www.php.net/distributions/php-3.0.11-win32.zip吧。下载文件名为php-3.0.11-win32.zip,

大小为1.68M。

(二)安装PHP3 For WIN9X/NT

  安装PHP3 For WIN9X/NT很简单,只要将php-3.0.11-win32.zip解压缩到一个目录中即可。在下面的

讨论中,假设PHP3安装在C:\Program Files\PHP3目录中。

(三)配置PHP3 For WIN9X/NT

  配置PHP3 For WIN9X/NT,就是要修改系统设置,使PWS4.0能利用PHP3脚本解释引擎解释PHP页面。

  1、把C:\Program Files\PHP3目录里的文件php3-dist.ini拷到windows98安装目录(如C:\PWIN98)

下,并改名为php3.ini。

  2、编辑php3.ini文件

    编辑php3.ini文件,将“Paths and Directories”下的“Extension_dir”项改为“Extension_dir

=C:\Program Files\PHP3”;将“browscap”下的“browscap”项改为“browscap=C:\PWIN98\SYSTEMinetsrv\browscap.ini”(PWS4.0安装目录下文件);在注册表的HKEY_LOCAL_MACHINE\SystemCurrentControlSet\Services\W3Svc\Parameters\ScriptMap的主键下,增加一个字符串值,其名称为

“.php3”(PHP3文件的扩展名),其值为“C:\Program Files\PHP3\php.exe %s %s”。

  这样,在重新启动PWS服务器软件后,PWS4.0就可以利用PHP3脚本解释引擎解释PHP页面了。

              三 PHP脚本语法简介

  在PHP3文件中,PHP脚本语句段以“”为结束,用“”括起来的部分就

是PHP程序段。

  PHP语法和C、Perl的语法很相似,并主要来源于C语言,如控制流语句与C几乎完全一样、变量之间的

运算符与C的类似、函数定义和调用与C的类似等。

  PHP的变量名前面必须有一个$号,如$Var1、$Var2。PHP的变量作用域规定也类似于C,即缺省认为主函

数中的变量是全局变量,而函数中的变量都是局部变量。

  在PHP中,echo和printf函数用来向HTML页面中输出HTML内容,其中echo输出无格式字符串,printf输

出格式化的字符串。如echo("
这个一个PHP页面


")和printf("%s,%d",str1,int1)。

  如果熟悉C语言语法,学习PHP脚本语法应该不会太难。

              四 建立自己的简单PHP页面

  所谓的PHP页面就是在普通的HTML页面文件中插入一些特殊的脚本语言并以扩展名PHP保

存后的页面文件,所以可以很容易地建立一个自己的简单的PHP页面。

  下面是一个简单的PHP页面文件( test01.php3),应该不难理解。

一个简单的PHP3页面

"); ?>

下面应出现4行语句,字体大小从4到7


>这行语句的字体大小为

  其中,语句 是将变量 i 的值输出到HTML文件中。

  由上可见,可以先制作一个普通的HTML页面文件,然后在需要的地方插入PHP脚本语言即可.

关键是熟练应用PHP脚本语句.

  该页面虽然简单,却可以帮助熟悉和理解PHP语法.可以用浏览器查看运行效果,再用其查看源代

码的功能看一下源代码,可以看对PHP页面解释后的HTML文件.注意必须用http的方式访问PHP页面,

不能象HTML页面文件那样双击文件名以文件方式浏览.如在笔者的计算机上的访问方式为

http://wangfajun/test01.php3,因为PHP页面需要PWS等服务器软件进行解释。

              四 获取用户请求信息

  要制作动态站点页面,获取用户请求信息是必不可少的。PHP页面可以利用这些信息作为某些应用

(如商业订单信息)的依据,并对申请者的申请要求作出反馈。

  在ASP页面中,可以利用其内建对象Request获取访问者的申请信息。而在PHP页面中,可以以读取

数组的方式获取访问者的申请信息如表单信息(Form Field)、查询信息(QueryString)等。请求页

面中以POST方式发送的请求信息可以以$HTTP_POST_VARS["ItemName"]的方式获取,以GET方式发送的请

求信息可以以$HTTP_GET_VARS["ItemName"]的方式获取,Cookies信息可以以$HTTP_COOKIE_VARS[

"ItemName"]的方式获取。一般表单信息是以POST方式发送的,可以以$HTTP_POST_VARS["ItemName"]的

方式获取;查询信息是以GET方式发送的,可以以$HTTP_GET_VARS["ItemName"]的方式获取。

(一)由一个HTML或PHP3页面请求另一个PHP3页面处理

  在下面的这个例子中,读者会员资格注册申请页面要求申请者填写其姓名全称、身份证号码、

EMail地址。在收到读者申请后通知其注册成功。

  先做一个读者会员资格注册申请页面,可以是HTML页面或PHP页面.这应该不成问题.

读者会员资格注册申请

读者会员资格注册申请

姓名全称:

身份证号码:

电子邮箱:

  在申请页面中,所有的申请数据均填写在Form元素中,并且在Form的Action中指定处理

申请的页面为test02.php3。当收到申请时,对应项目的数据可以由$HTTP_POST_VARS["项目名称"]

来获得,其中"项目名称"为Form元素的名称,如"姓名全称"对应"FullName" ,如"身份证号码"对

应"UniversalID" 。现在利用这些信息来制作一个注册成功的通知页面test02.php3。

读者会员资格注册申请成功

读者会员资格注册申请成功

亲爱的读者:

我们已经收到你的申请,并接受你的申请.你已经成为我部正式读者会员.

你的读者号为CN。我们将通过你的电子信箱

来正式通知你.此后我部举行读者沙龙活动的时间

和地点也将通过该信箱通知你.

  现在用浏览器打开申请页面apply.htm,填入对应数据后提交申请,查看反馈效果,再用浏览器

的查看源代码的功能看一下源代码,可以看对PHP页面解释后的HTML文件.

(二)由一个PHP3页面请求同一个PHP3页面处理

  下面的另一个例子中,login.php3 提供了一个用户登录页面,要求用户输入登录帐号和密码,

然后再通过Form的Action属性将表格发送给自己进行处理.在 login.php3 中,将根据帐号和密码

是否为空来判断是输入页面还是反馈页面,并给予不同的提示,若未输入帐号或密码则提示“用户

登录,请输入用户帐号和密码",否则显示用户帐号和密码。

用户登录

if(Empty($HTTP_POST_VARS["CustomerID" ] ) ¦¦

Empty($HTTP_POST_VARS["Password" ] ))

{

?>

用户登录,请输入用户帐号和密码


用户帐号:

用户密码:

}

else file://已输入用户帐号和密码,则显示用户帐号和密码

{

printf("

用户%s登录成功,密码为%s。

",$HTTP_POST_VARS[ "CustomerID" ],

$HTTP_POST_VARS[ "Password" ]);

}

?>

(三)在PHP3页面中获取查询参数信息

  当用户以 xxxxx.php3?ParaName = ParaValue 的方式发出查询请求时,xxxxx.php3 可以

从$HTTP_GET_VARS[ "ParaName"] 中获取用户提交的查询参数ParaName的信息ParaValue,还可

以从count($HTTP_GET_VARS)得知用户请求参数的个数并进行相应的处理。

  当用户以 query.php3?CustomerID=7777 的方式发出查询请求时,query.php3 可以从

$HTTP_GET_VARS[ "CustomerID" ] 中取得查询参数 CustomerID的值为 7777,

count($HTTP_GET_VARS) 为 1.

  当用户以 query.php3?CustomerID=7777&Password=DogIsDog 的方式发出查询请求时

,query.php3 可以从$HTTP_GET_VARS[ "CustomerID" ] 中取得查询参数 CustomerID 的值为

7777,从$HTTP_GET_VARS[ "Password" ] 中取得查询参数 Password的值为 DogIsDog ,

count($HTTP_GET_VARS) 为 2。

  下面的例子(query.php3)用于获取用户指定的查询参数,并显示出来反馈给用户。当以

query.php3?CustomerID=1111&StartDate=1999.01.01&EndDate=1999.06.30的方式发出请求时,

得到的结果为:

您指定了3个查询参数如下:

第1个参数CustomerID的值为:1111

第2个参数StartDate的值为:1999.01.01

第3个参数EndDate的值为:1999.06.30

查询参数处理

$QueryCount = count($HTTP_GET_VARS);//查询参数个数

printf("

您指定了%d个查询参数如下:

",$QueryCount);//显示查询参数个数

file://列举各个查询参数及其值

for( $intIndex = 0 ;list( $key, $val ) = each( $HTTP_GET_VARS ); $intIndex++ )

{

printf("

第%d个参数%s的值为:%s

", $intIndex+1, $key, $val);

}

?>

(四)、获取用户的Cookies信息

Cookies 可以服务器和客户端之间双向传递,它记录了特定用户的某些信息.在PHP

中可利用$HTTP_COOKIE_VARS["CookieItemName"]获取用户的Cookies信息。下面语句可用来显

示用户的所有Cookies信息:

$QueryCount = count($HTTP_COOKIE_VARS);//Cookie数目

printf("

您有%d条Cookies信息如下:

",$QueryCount);//显示Cookie数目

file://列举各个Cookie及其值

for( $intIndex = 0 ;list( $key, $val ) = each( $HTTP_COOKIE_VARS ); $intIndex++ )

{

printf("

第%d条Cookie(%s)的值为:%s

", $intIndex+1, $key, $val);

}

?>

(五)、获取服务器环境信息

  在PHP中,服务器环境信息以一组全局变量的形式给出,以供PHP脚本程序访问。

  常用的服务器环境变量信息有:

$GATEWAY_INTERFA

CE:网关界面如CGI/1.1

$HTTP_ACCEPT:客户端可接受的MIME类型列表如*/*

$HTTP_ACCEPT_LANGUAGE:服务器采用的语言,"en"表示英文,"zh-cn"表示简体中文

$HTTP_HOST:HTTP服务器名称

$HTTP_USER_AGENT:发出请求的客户浏览器类型,根据用户请求信息和browscap.ini来识别,

         如Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)

$LOCAL_ADDR:本机服务器名称

$PATH_TRANSLATED:脚本文件的文件全名(含实际路径),如

C:\Inetpub\wwwroot\php3\query.php3

$REMOTE_ADDR:发出请求的客户端机器的IP地址

$REMOTE_HOST:发出请求的客户端机器的名称

$REQUEST_METHOD:发出请求的方法(Post/Get/Head)

$SCRIPT_NAME:被调用的脚本文件的路径及文件名称如/php3/query.php3

$SERVER_NAME:服务器的名称或IP地址

$SERVER_PORT:HTTP服务端口号,一般为 80.

$HTTP_REFERER:客户端发出CGI程序请求的页面的URL

$SERVER_PROTOCOL:服务器软件所用的协议如HTTP/1.1

$SERVER_SOFTWARE:服务器软件的名称及版本如Microsoft-IIS/4.0

                 五 向用户发送信息

  可以利用PHP提供的函数很灵活地控制向客户端发送的信息的内容和方式.例如可以动态设置反馈

信息、设置客户的Cookie、页面重新定位等等。

(一)、利用 echo、printf等PHP函数控制发送的信息内容

函数 echo、printf 可以向发往客户端浏览器的HTML文件中直接输出内容。

在下面的例子中,selecolr.php3 要求用户输入一个颜色名称,用户确认后将用户申请发

往同一个页面selecolr.php3,然后用用户指定的颜色将颜色名称显示出来.

服务器端脚本和客户端脚本混合编程

鼠标移到各记录上的【项目名称】上时,请注意状态条内容的变化

项目名称状态条应出现的内容

鼠标现在正指向项目

七 增加注释

  在编程时添加注释是一个好的习惯.PHP 允许在页面代码中添加注释,具体的注释方法与C

语言注释语法相同,如可用双斜杠“//”作为注释符。

八 利用 Include 来实现功能模块化

  可以将常用的功能函数存于一个PHP文件,在其它PHP页中要用其中的功能时,将包含函数的

PHP文件包含在调用函数的PHP文件中.这时可使用 Include 函数。具体语法为:

include($FileName);

使用时应该注意:

  1、应避免自包含,即 File1 包含 File1;在多个文件中有包含语句时,应避免间接自包含

即循环包含,如File1包含File2,File2包含File3,File3包含File1.

  2、被包含的脚本语言的类型必须是PHP语言类型或脚本语句段。

  以上是学习和使用PHP创建动态、交互式站点的一些入门知识,有了这些基础知识,就可以发挥

以前自己积累的编程经验,自己动手学习和探索用PHP创建基于UNIX/LINUX网站系统的动态、交互式

站点的高级网络应用系统了。

责任编辑:admin
相关文章