session入库的作用

这2天做个项目,用到了session_set_save_handle这个函数。在网上找了半天都是千篇一律的文章,创建一个表,使用这个函数,写成一 个类神马的东东。会的人看了能理解,一点不会的人看了完全不知道这玩意是个啥。怎么用。害我花了好久的时间,还好自己的想像力丰富,才猜出了此函数的真 谛,为了大家少走弯路,就分享给大家。

废话不多说。这个函数的作用是神马?可能我说的只是一个部分。
一客户端访问一个服务器的时候,建立了一个会话机制,他们验证这个机制就靠的产生会话机制时服务器端发给客户端的一个sessionid , 这仅仅是一串经过加密的字符串,就像我们去理发办了一张会员卡,你来消费就会拿这个卡在电脑上刷一下,读这个卡号一样。也就是说。服务器相同,同一客户端在一定时间范围内访问服务器的会话sessionid是相同的。
比如咱们有个主站叫 www.bytszz.com  这里有个会员登录功能。好了。登录后要实现对另一个站,这里比如他的子站  member.bytszz.com 的同步登录,因为2个站可能放在相同的服务器上,这时他们的PHPSESSID是相同的。可以实现同步登录。但如果是放在不同的服务器上呢?
 
他们产生的PHPSESSIONID是不同的。按前面说的他们就无法获取相同的2个sessionid。而且域也不一样。这时如果我们依然想实现同步登陆,怎么办?
session的内容是存放在服务器端的。不同的服务器内容不方便共享。所以我们要找一个中介。让两台服务器都可以从这里读取到存放session内容的中介。
这里提供2种思路。一种是存放在一个数据库的表中,还有一种是存放在某个缓存文件中,具体情况具体对待吧。之所以说这2种方法就是要说标题所提到的session_set_save_handle方法。这个方法的使用大家百度一下。我说下他的作用。
咱们 可以采用自己的命名规则,用md5加密一串字符串吧。以自己的字符串为键值放到cookie中去。键名自己取个好了。比如这里就存$_COOKIE['TEXTID'] = 'sdfdasf32edsdfsdaafdssafasdf',这样的东西,然后使用session_set_save_handle方法,连接到数据库的一个表中。用这个 'sdfdasf32edsdfsdaafdssafasdf' 作为一个sesskey,将我们要存的session内容存到一个data字段中。加上一些需要的字段比如IP呀,有效时间呀待。在另一个不同服务器的网 站采用相同的命名规则。因为要生成相同的sesskey,所以命名规则不要设计到服务器的信息。这样。2个服务器生成的TEXTID是相同的。通过此函数 可以读取数据表中的sesskey。返回data。达到session共享。这样就可以不同服务器同步登录了。存在文件中的方法也是这个原理。
 
好了。就写到这里。如果有不清楚的。可以留言我。
posted @ 2016-03-03 16:08  猪啊美  阅读(1204)  评论(0)    收藏  举报