快速业务通道

PHP开发中session应用详解

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
码 */
$SESS_DBH = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");

……//定制函数

session_set_save_handler( "sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
?> 

  定制使用dbm文件时的接口 :

<?
$SESS_DBM = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");

……//定制函数

session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
?> 

  session定制的测试代码:

<?php
……
if ($handler == "dbm") include("session_dbm.php");//使用何种接口
elseif ($handler == "mysql") include("session_mysql.php");
else ……

session_start();
session_register("count");
……
?> 

  在身份验证中,怎样应用Session?

  Session可以用于用户认证 :

  验证用户是否合法:

<?
 session_start();
 ……//验证过程
 session_register("reguser");
?> 

  在另一页面中检查用户是否登录

<?
 session_start();
 if(isset($reguser)&&$reguser!=""){//如果已经登录
  echo "亲爱的用户,欢迎你";
 }else{//如果没有登录
  echo "请先注册!";
 }
?> 

  用户退出登录:

<?
 session_destroy();
 ……
?> 

  如何实现多session并发运行?

  问题提出:我在为所在单位编写一个进销存系统中发现需要让多个用户可以同时进入一个php应用程序。原来设计的静态的唯一的session ID导致数据混乱。这样,动态生成一个唯一的session ID成为当务之急。

  解决办法很简单:我用了php文件名+时间戳为唯一的session ID,这样在我的程序中的每个session就各就各位,不再混乱了。

  下面把我的源代码公布,方便也有同样的问题的朋友多一个解决方法。

//Start a PHP session to preserve variables.
  if ( empty($mysessionname) ) {
     $micro = microtime();
     $micro = str_replace(" ","",$micro); // strip out the blanks
     $micro = str_replace(".","",$micro); // strip out the periods
     $mysessionname = "po_maint" . $micro;
  }
  session_name($mysessionname);
  session_start(); 

  程序注释:

  用mysessionname为页面间唯一的sessionname传递变量,如果你也用到这个名字必须把上述程序做个小小的改动。Mysessionname不能为session的内部变量名,因为他在session开始之前就已经存在了。Mysessionname也不能用cookie方式存放,因为多个session肯定会覆盖掉原先的cookie文件。你可以用隐含表单的域来保存它。这样就不会有问题。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号