A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

717572975

中级黑马

  • 黑马币:77

  • 帖子:35

  • 精华:0

© 717572975 中级黑马   /  2017-2-10 09:18  /  1148 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就是用户在同一个浏览器上登录2个账号的时候,第一个账号一刷新就会被第二个用户的session 覆盖导致2个页面都是第二个页面的

2 个回复

倒序浏览
session是存储在服务器端的,默认是以文件方式存储的(session.save_handler = files)。那session是如何产生的呢?session是通过session_start()函数产生的 ,当此函数运行时,在session存储的目录里生成一个文件和唯一一个与之对应的session id,通过session id可以取出该session文件的数据。由于每次运行session_start()都会产生新的seession文件,那么如何利用到以前生成session文件呢,只需session_start($session_id),那么便不会新产生session文件了,而会去读session id对应的session文件。session id在默认情况下都是使用在客户端(浏览器)的cookie来保存session id(在chrome浏览器上按F12键,点击Resources-cookies,可以看到),使用$_COOKIE['PHPSESSID']可以获取。那个PHPSESSID是session id的默认名称,在php.ini里可以通过session.name来设置,在脚本中用session_name()来获取session id的名称。每次浏览器和服务器对话时,浏览器都会把session id传给服务器的,服务器会依据传递过来的session id找到相应的session文件获取相应信息进行相关操作。而一旦客户端(浏览器)禁用了cookie,那么服务器端变不会接收到session id,此时需要显示传递session id了。两种方法:手动通过URL传递session id;隐藏表单传递session id。上述两种方法需要服务端的php环境中session.use_trans_sid 值为 1。
回复 使用道具 举报
能上一段实例代码吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马