载,也可以上国内大部分 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>
.....