php一个诡异而简单的错误

看到日志里面出现错误,大概意思是:调用方法时验证错误。

仔细查看log:发现用户已经登录,但是在后续的操作中,前面登录的信息丢失,验证失败。

和用户沟通,他说他登录后的一些操作,全部弹出警告框,说没有登录。

仔细排查,发现大部分用户正常,只有极个别用户有类似情况。 晕!!!!!!!!

和这个用户多次沟通后了解到:他使用的是google chrome 。让他使用firefox 和 ie8 后一切正常。

这个问题刚开始我认为是“用户登录后的缓存”没有被更新而产生的问题。

既然这个问题是和浏览器相关的,那么直接锁定为浏览器cookie 存储上的问题。因为整个应用的验证是基于cookies的。

呵呵,到底是咋的回事?

1. 早期应用是在 http://www.example.com 域名下运行的。

2. setcookie( key, value, path, "."+HOST_NAME ) => setcookie( key, value, path, ".example.com" ) 

    ####".example.com"  域名前面多一个点,意思是整个域+子域

3. 后面 服务器更换,直接使用了 ip地址进行访问。类似于 http://202.15.32.100/index

4. setcookie( key, value, path, "."+HOST_NAME ) => setcookie( key, value, path, ".202.15.32.100" )

很显然: ".202.15.32.100" 这个是多了一个点的IP地址,而不是域名。chrome 和 IE9 下cookie都不会提取,所以验证失败。

原文来自站长网http://www.software8.co/wzjs/PHPshili/2648.html

原文地址:https://www.cnblogs.com/wwwroot/p/2862533.html