当前页面位置: » 丰搜网 » 文档中心 » 详细内容
php实现多session并发运行
首先介绍一下session的概念:
所谓session是微软首先提出的,在asp中最先集成。由于session的采用,大大方便了web开发员的工作。一时间asp风靡全球。现在php4也加入session的支持,再度显示出open source 的强大力量。和cookie类似,设计session的目的也是为了在一个访问期间在不同的页面间传输数据以解决http协议无状态的问题,但session更加简单、更加安全。session 中文没有一个统一的译法,我习惯上译为会话。关于session的意义大家都应该清楚: 其实是在浏览某个网站时,在浏览器没有关闭的情形之下,一个web应用的开始和结束。一个session可以包括数次http的请求和应答,比如我们用freemail.263.net,从login到logout或者超时就作为一个session 的生存期。每一个被创建的session都有一个唯一的标识串,叫session id , 这个串被发送到客户端,同时在服务器端也生成了同样唯一的标识串入口,这个标识串或者放在文本文件中,或者放在一个数据库中。然后程序可以在这个sessionid下注册一些session 变量。这些变量如同一般的变量一样可以保存文本或数值信息,可以通过session被读出或写入。 session 的唯一标识一般是在系统内部唯一的session id,一般是一个挺长的字符串。
问题的提出:
解了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文件。你可以用隐含表单的域来保存它。这样就不会有问题。欢迎来信讨论。让我们一起做得更好。
出处:天极网
责任编辑:cjj
◎进入论坛网络编程版块参加讨论
| expressionengine模板设计大赛 php5 安装方法 学习使用php数组 asp 指南 [php]一次编写,随处运行 | | | | 保持清晰的文档结构 | | | 月亮图腾教程ⅴ—最后一战 | | | x-sapce使用系列教程 | | | x-space安装系列教程 | | | 抽线以及虚线画法简明教程 | | | 创新设计 百万格子大楼 | | | discuz!转换系列教程 | | | 世界杯足球的32个变种 | | | 易上手简单图层样式扣图 | | | 一封写给mm学习linux的信 | | | | | | 保持清晰的文档结构 | | | 月亮图腾教程ⅴ—最后一战 | | | x-sapce使用系列教程 | | | x-space安装系列教程 | | | 抽线以及虚线画法简明教程 | | | discuz!转换系列教程 | | | 易上手简单图层样式扣图 | | | 十分钟学会 xajax | | | css 菜单举一反三 | | | 利用照片制作版画简明教程 | | | | | 蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。 特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有 | | 本文总共有 6 条评论,现在显示最新的 5 条。暂时没有人参于评分 68.148.19.77 publish at 2004-6-10 12:50:33 这样做就是为了不混淆sessionid, asp是自动生成的,你不用控制,但php做不好就会重复,所以md5 编码ip等都会造成混乱session,而且spoof的破解方法就是从session开始的..
ps:小白们请尊重作者,自己没搞懂就乱发 210.51.9.1 publish at 2004-3-17 0:01:37 如果不同用户在同一台机器上登录,session name都用一样的的确会导致混乱,我认为作者的做法是对的而且有必要,不信大家可以试试 61.160.90.172 publish at 2004-1-26 17:44:42 晕,看来作者连session的基本原理都不懂 211.161.197.117 publish at 2004-1-17 16:11:28 有必要吗? 211.147.105.130 publish at 2003-12-5 9:56:15 有必要么?
查看全部评论 | | |
| 关于站点 免责声明 联系站长 版权隐私 友情链接 网站地图 京icp备05002321号 | ©1999-2006 blueidea.com. 版权所有 | |