background image

载,也可以上国内大部分 php 站点下载。我们要做的第一件事是让 phplib 和 php3 结合在一起使它能工作。

为了能实现这方面的功能,我们需要先安装 phplib  

跟着我来做,很容易的(以下方法在
win2000+php3.0.16+apache1.3.12+phplib7.2c+mysql3.23.21 for win32 上通过) 
phplib 最基本的功能包括用户认证,Session

 

管理,权限及数据库的抽象化。

怎样使用 phplib 来实现 session 功能呢? 

一、首先你将 phplib 解开,里面有一个目录叫"php",将这个目录拷贝到 apache 的安装目录下。以下以

笔者的机器为例: 

我的 apache 安装在 d:apache 目录下,我将上面的"php"目录拷贝到 d:apache,并将 phplib 下的
pages

 

目录下的文件和目录一起拷贝到

d:apachehtdocs

 

下,注意不带目录本身。

phplib 的类库需要根据系统进行初始化,你可以修改 local.inc 文件,其中包含着一些基本参数,你可

 

以根据自己机器的实际情况来进行修改。
将 d:apachephpprepend.php3

 

文件中的一段程序改为如下样子:

if (!isset($_PHPLIB) or !is_array($_PHPLIB)) { 
$_PHPLIB["libdir"] = "d:/apache/php/"; //这儿改为你放 phplib 下 php

 

目录的路径

然后将 d:apachephplocal.inc 文件改如下: 

class DB_Example extends DB_Sql { 
var $Host = "localhost";//你的 mysql

 

数据库所在主机名

var $Database = "test";//

 

数据库名

var $User = "root";//

 

数据库用户名

var $Password = "";//

 

数据库用户口令

最后一步执行解开的 phplib 目录中的 stuff 目录下的 create_database.mysql 文件,

 

生成初始表。

我们说明一下 phplib 的工作原理,每一个使用 phplib 的页面首先必须可以找到运行 phplib 所必须类库

文件,我们可以在 php3.ini 中设置 auto_prepend 

变量来支持,phplib 分发包中包含一个 prepend.php3 文件,将 auto_prepend 指定

为"d:/apache/php/prepend.php3"(带引号)后,各页面就会自动包含 phplib

 

类库,我们还可以

将 phplib 类库所在目录加进 include 变量中,以便可以找到这些文件,当然,最苯的办法就是指定
phplib 的绝对路径,这可不是个好主意,

 

可移植性太差!

第二步,每一个使用 phplib 的页面中,你必须首先调用 page_open 函数进行初始化。这会告诉
phplib

 

,你现在或将来会用到状态保存。一个典型的

page_open

 

例子如下:

<?php 
page_open(array("sess" => "Example_Session")); 

?> 

数组变量(sess)用来初始化一些状态保存对象,注意:必须使用 phplib 内置名(sess),这些内置名是你

在 local.ini 中所定义的,page_open 

函数必须在页面内容输出到浏览器之前被调用。php3 脚本最后应以 page_close()结束,这将会将有关状

 

态数据写回到数据库中,如果你忘了的话,

结果你应该能想到,哈哈,你的变量全丢了,可不要怪我没告诉你... 

因为 phplib 使用了 Cookies 来保存状态信息,所以 page_open()函数必须在页面内容输出到浏览器之前

 

被调用, 这里的页面内容可以是任何 HTML 

信息或者空行,如果你发现了错误"Oops - SetCookie called after header has been sent",

这表明在 page_open()

 

之前向浏览器输出了些什么,

你要特别留意空行,因为非常难找到,典型的错误是在<?   

和 ?>标记之间输出了空行,你应检查在

local.inc 和 prepend.php3

 

文件中是否包含了空行,

这也是一个非常容易出错的地方。为了减少出错的可能,我们可以这样书写初始化程序: 

<? 
page_open(array("sess" => "Example_Session")); 

?> 
<html> 

.....