长沙发上的对话(四)
有很多给猫换肤的办法…
当然,如果你的站点仍然运行着PHP3,你就无法使用迄今为止的任何代码。但是不要沮丧–有另一种提供给PHP3用户的解决办法。它就叫做PHPLIB,它提供了一组有用的类,允许在你的PHP3中增加对session的管理。可以按照包中的指示进行安装,你还需要修改“local.inc“配置文件来创建你自已的类。
象在PHP4中一样,在每次你初始化一个session时,你需要预先调用page_open()函数。PHPLIB返回一个缺省的名为Example_Session的类–你可以在“local.inc“文件中修改这个值–它将用在下面的例子中:
<?php
$sess->register(’username’);
$sess->register(’stock1′);
$sess->register(’stock2′);
$sess->register(’stock3′);
$sess->register(’stock4′);
$query = “select stock_pref1,stock_pref2,stock_pref3,stock_pref4
fromuser_infowhere username=’$username’”;
list($stock1,$stock2,$stock3,$stock4) =mysql_fetch_row($result);
echo “Hi $username!<br>”;
echo “Your selected stocks are:<br>”;
echo “$stock1<br>”;
echo “$stock2<br>”;
echo “$stock3<br>”;
echo “$stock4<br>”;
if($sess->is_registered(’username’))
{
echo “Variable \”username\” is registered!<br>”;
}
else
{
echo “Variable \”username\” is unregistered!<br>”;
}
{
echo “Variable \”username\” is registered!<br>”;
}
else
{
echo “Variable \”username\” is unregistered!<br>”;
}
病人:哇哦,医生–太好了!非常感谢你做的一切! 心理医生:没问题,维克多。我很乐意帮助你。现在感觉好点吗? 病人:噢,轻松!当我刚进来时,整个天看上去都是灰色和阴沉的–现在,这个雨蓬窗户外面的景色从来没有那么好过… 心理医生:恩…维克多…如果我是你在外面会很小心,扶手有一点坏了,在那可能不太安全。 病人:别担心,医生–象这样的天,我感到神…圣…啊啊!!!!
象在PHP4中一样,在每次你初始化一个session时,你需要预先调用page_open()函数。PHPLIB返回一个缺省的名为Example_Session的类–你可以在“local.inc“文件中修改这个值–它将用在下面的例子中:
<?php
page_open(array(”sess” => “Example_Session“));
?>
在任何发给浏览器的输出之前调用page_open()非常重要。为了注册你的session变量,下面的语句可以完成这个工作。<?php
//
初始化一个sessionpage_open(array(”sess” => “Example_Session“));//
注册一个session变量$sess->register(’username’);?>
每一个页面也必须包含相应的page_close()函数,用来确认所以的改变量被保存在数据库中。<?php
page_close();
?>
除了这些,大部分的代码都是一样的。看一下以前例子的PHPLIB版本:<?php
//
初始化一个sessionpage_open(array(”sess” => “Custom_Session“));//
注册session变量-注意语法$sess->register(’username’);
$sess->register(’stock1′);
$sess->register(’stock2′);
$sess->register(’stock3′);
$sess->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
fromuser_infowhere username=’$username’”;
$result =mysql_query($query,$db);
//
从数据库中取股票代码,并赋值给session变量list($stock1,$stock2,$stock3,$stock4) =mysql_fetch_row($result);
//
输出echo “Hi $username!<br>”;
echo “Your selected stocks are:<br>”;
echo “$stock1<br>”;
echo “$stock2<br>”;
echo “$stock3<br>”;
echo “$stock4<br>”;
//
生成页面其余代码//
将数据保存到数据库中page_close();
?>
unregister(variable)
<?php
page_open(array(”sess” => “Example_Session“));
//
注册一个变量$sess->register(’username’);//
检查是否它已经被注册了if($sess->is_registered(’username’))
{
echo “Variable \”username\” is registered!<br>”;
}
else
{
echo “Variable \”username\” is unregistered!<br>”;
}
//
注销一个变量$sess->unregister(’username’);//
检查是否已经被注销if($sess->is_registered(’username’)){
echo “Variable \”username\” is registered!<br>”;
}
else
{
echo “Variable \”username\” is unregistered!<br>”;
}
page_close();
?>
is_registered(variable)
如果在一个session已经被注册了,返回true,否则返回false。<?php
page_open(array(”sess” => “Example_Session“));
if($sess->is_registered(’username’))
{
echo “A session variable by the name \”username\” already
exists”;
}
else
{
$sess->register(’username’);
}
page_close();
?>
delete()
释放当前的session。 要注意地有趣的一点是:在PHPLIB的cookie模式中,有可能在调用过delete()之后开始一个新的session,在客户端设置一个新的cookie,甚至重新注册一些以前session的变量–可以从根本上使改变session象飞一样。当然,你象这样做事情,你需要让你的生活…快起来!url($url)
充许你将用户重定向到一个新的页面。self_url()
返回一个当前页的URL的引用,包括PHP_SELF和QUERY_STRING信息。 那么在最后,对那些不幸拥有一个不提供PHP4和PHPLIB的ISP的你来说–记住,通过好的cookie技术总是可能模拟出session来的。你所要做的只是设置一个带有信息的cookie,用来长期保留用户对你的站点的访问过程,每次在用户访问一个新页面的时候处理这个信息。很原始–但是它可以工作,而且有时你也不能将能够做成一件事的简单方法打死! 病人离开医院病人:哇哦,医生–太好了!非常感谢你做的一切! 心理医生:没问题,维克多。我很乐意帮助你。现在感觉好点吗? 病人:噢,轻松!当我刚进来时,整个天看上去都是灰色和阴沉的–现在,这个雨蓬窗户外面的景色从来没有那么好过… 心理医生:恩…维克多…如果我是你在外面会很小心,扶手有一点坏了,在那可能不太安全。 病人:别担心,医生–象这样的天,我感到神…圣…啊啊!!!!