赛迪网 > IT技术 php > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

长沙发上的对话(四)

发布时间:2006.08.04 19:28     来源:plwww    作者:

p> 有很多给猫换肤的办法...

  当然,如果你的站点仍然运行着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)

  允许你从一个特别的session中注销一个变量。注意在那种情况下,变量并没有被删除,可是它的值将会在页尾丢失,因为它不再被保存到数据库中。

$#@60;?PHP

page_open(array(sess =$#@62; Example_Session));

//注册一个变量 $sess-$#@62;register(username);

//检查是否它已经被注册了

if($sess-$#@62;is_registered(username))

{

echo Variable \username\ is registered!$#@60;br$#@62;;

}

else

{

echo Variable \username\ is unregistered!$#@60;br$#@62;;

}

//注销一个变量 $sess-$#@62;unregister(username);

//检查是否已经被注销 if($sess-$#@62;is_registered(username))

{

echo Variable \username\ is registered!$#@60;br$#@62;;

}

else

{

echo Variable \username\ is unregistered!$#@60;br$#@62;;

}

page_close();

?$#@62;

is_registered(variable) 如果在一个session已经被注册了,返回true,否则返回false。

$#@60;?PHP

page_open(array(sess =$#@62; Example_Session));

if($sess-$#@62;is_registered(username))

{

echo A session variable by the name \username\ already

exists;

}

else

{

$sess-$#@62;register(username);

}

page_close();

?$#@62;

delete() 释放当前的session。

  要注意地有趣的一点是:在PHPLIB的cookie模式中,有可能在调用过delete()之后开始一个新的session,在客户端设置一个新的cookie,甚至重新注册一些以前session的变量 -- 可以从根本上使改变session象飞一样。当然,你象这样做事情,你需要让你的生活...快起来!

url($url) 充许你将用户重定向到一个新的页面。

self_url() 返回一个当前页的URL的引用,包括PHP_SELF和QUERY_STRING信息。

  那么在最后,对那些不幸拥有一个不提供PHP4和PHPLIB的ISP的你来说 -- 记住,通过好的cookie 技术总是可能模拟出session来的。你所要做的只是设置一个带有信息的cookie ,用来长期保留用户对你的站点的访问过程,每次在用户访问一个新页面的时候处理这个信息。很原始 -- 但是它可以工作,而且有时你也不能将能够做成一件事的简单方法打死!

病人离开医院

病人: 哇哦,医生 -- 太好了!非常感谢你做的一切!

心理医生: 没问题,维克多。我很乐意帮助你。现在感觉好点吗?

病人: 噢,轻松!当我刚进来时,整个天看上去都是灰色和阴沉的 -- 现在,这个雨蓬窗户外面的景色从来没有那么好过...

心理医生: 恩...维克多...如果我是你在外面会很小心,扶手有一点坏了,在那可能不太安全。

病人: 别担心,医生 -- 象这样的天,我感到神...圣...啊啊!!!!


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 长沙发上的对话(三) (01-06) · 长沙发上的对话(一) (05-14)
· PHP4的新特征 (08-03) · 把PHP4安装到Win2000的IIS5中 (01-05)
· PHP/MySQL三日通-第三天(二) (11-22) · PHP/MySQL三日通-第三天(一) (04-21)
· PHP/MySQL三日通-第二天(二) (03-04) · PHP/MySQL三日通-第二天(四) (06-06)
· PHP/MySQL三日通-第二天(一) (05-03) · PHP/MySQL三日通-第二天(三) (02-20)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管