有很多给猫换肤的办法...
当然,如果你的站点仍然运行着PHP3,你就无法使用迄今为止的任何代码。但是不要沮丧 -- 有另一种提供给PHP3用户的解决办法。它就叫做PHPLIB,它提供了一组有用的类,允许在你的PHP3中增加对session的管理。可以按照包中的指示进行安装,你还需要修改"local.inc"配置文件来创建你自已的类。
象在PHP4中一样,在每次你初始化一个session时,你需要预先调用page_open()函数。PHPLIB返回一个缺省的名为Example_Session的类 -- 你可以在"local.inc"文件中修改这个值 -- 它将用在下面的例子中:
$#@60;?php
page_open(array("sess" =$#@62; "Example_Session"));
?$#@62;
在任何发给浏览器的输出之前调用page_open()非常重要。为了注册你的session变量,下面的语句可以完成这个工作。
$#@60;?php
//初始化一个session page_open(array("sess" =$#@62; "Example_Session"));
//注册一个session变量 $sess-$#@62;register(username);
?$#@62;
每一个页面也必须包含相应的page_close()函数,用来确认所以的改变量被保存在数据库中。
$#@60;?php
page_close();
?$#@62;
除了这些,大部分的代码都是一样的。看一下以前例子的PHPLIB版本:
$#@60;?php
//初始化一个session page_open(array("sess" =$#@62; "Custom_Session"));
//注册session变量 - 注意语法
$sess-$#@62;register(username);
$sess-$#@62;register(stock1);
$sess-$#@62;register(stock2);
$sess-$#@62;register(stock3);
$sess-$#@62;register(stock4);
//连接MySQL $db = mysql_connect("someserver.com", "tom", "jones");
//选择数据库 mysql_select_db("stock_db",$db);
//使用SQL查询数据库
$query = "select stock_pref1,stock_pref2,stock_pref3,stock_pref4
from user_info where username=$username";
$result = mysql_query($query,$db);
// 从数据库中取股票代码,并赋值给session变量
list($stock1,$stock2,$stock3,$stock4) = mysql_fetch_row($result);
//输出
echo "Hi $usernam #@60;br$#@62;";
echo "Your selected stocks are:$#@60;br$#@62;";
echo "$stock1$#@60;br$#@62;";
echo "$stock2$#@60;br$#@62;";
echo "$stock3$#@60;br$#@62;";
echo "$stock4$#@60;br$#@62;";
//生成页面其余代码
//将数据保存到数据库中
page_close();
?$#@62;
如你所见,一旦你放下PHP4版本,理解PHPLIB版并不因难 -- 当你知道了PHP4中的对session的内部支持很大程度上基于PHPLIB模块你就不会感到奇怪了。如果你感兴趣,PHPLIB实际上在对session的管理中,对身份认证和权限的类更加深入,它允许你在基于数据库的认证管理上,给一个用户允许或禁止处理的权力 -- 可以看一下文档中关于如何使用这些特性的例子。
PHPLIB也提供一些有趣的内建函数。
unregister(variable)