自己学习session入库,用到了session_set_save_handle这个函数。总结如下:
一个客户端访问一个服务器的时候,建立了一个会话机制,他们验证这个机制,就是产生会话机制时,服务器端发给客户端的一个sessionid ,
sessionid一串经过加密的字符串,服务器相同,同一客户端在一定时间范围内访问服务器的会话sessionid是相同的。
比如有个主站叫 www.a.com 这里有个会员登录功能。
会员登录后要实现对子网站(son.a.com)的同步登录,如果2个站放在相同的服务器上,这时他们的PHPSESSID是相同的。可以实现同步登录。
- 如果是放在不同的服务器上呢?
两个网站不同的服务器,他们产生的PHPSESSIONID是不同的。按前面说的他们就无法获取相同的2个sessionid。而且域也不一样。
- 这时如果我们依然想实现同步登陆,怎么办?
session是存放在服务器端的。不同的服务器内容不方便共享。所以我们要找一个中介。让两台服务器都可以从这里读取到存放session信息。
- 这里提供2种思路:
思路一:存放在一个数据库的表中
思路二:存放在某个缓存文件中两种思路,具体情况具体应用吧。
- 为什么提到这2种思路?
因为所提到的session_set_save_handle方法。这个方法的使用可以自行了解一下。
- session_set_save_handle的作用
咱们可以采用自己的命名规则,用md5加密一串字符串。以自己的字符串为键值放到cookie中去。
比如就存$_COOKIE['TEXTID'] = 'sdfdasf32edsdfsdaafdssafasdf',这样的信息,然后使用session_set_save_handle方法,连接到数据库的一个表中。
用这个 'sdfdasf32edsdfsdaafdssafasdf' 作为一个sessionkey,将我们要存的session内容存到一个data字段中。加上一些需要的字段比如IP呀,有效时间等等。
在另一台服务器的网站采用相同的命名规则。因为要生成相同的sessionkey。
这样两台服务器生成的TEXTID是相同的。通过此函数 可以读取数据表中的sessionkey返回data。达到session共享。这样就可以不同服务器同步登录了。
存在文件中的方法也是这个原理。