Session入库的作用

自己学习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共享。这样就可以不同服务器同步登录了。
        存在文件中的方法也是这个原理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值