有的时候程序在A服务器上正常运行没问题,某些原因需要更换服务器,程序放到B服务器上其他都正常访问,唯独会员不能登陆了,登陆之后自动跳转到login页面,反复让你登陆,经查数据库session表中id有重复项目,也就是说 session出问题了。
这并不是程序本身的问题,是服务器设置的问题,下面重点来了,请看下面两个配置指令:
session.sid_bits_per_character
session.sid_length
其中重点是 session.sid_bits_per_character
其功能是控制Session ID中每个字符包含的比特数(信息量)。
可选值
; 4 bits per character - 使用字符集: 0123456789abcdef
session.sid_bits_per_character = 4; 5 bits per character - 使用字符集: 0123456789abcdefghijklmnopqrstuv
session.sid_bits_per_character = 5; 6 bits per character - 使用字符集: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,-
session.sid_bits_per_character = 6
看出来了吧,新服务的设置的 session.sid_bits_per_character 值可能是4,所包含的字符集范围小,程序生成的session id值 和 php 得字符集匹配不上,所以才会出现登录不上去的情况。
修改对应的 session.sid_bits_per_character 字符集就ok了,至于 sid_length session id字符长度至少32,最大256,通常32就够用了。