近几天在整合ShopEx 4.8与PHPWind 6.3.2时,发现整合好后,立刻注册帐号,能实现同步登录,但是如果使用一个小时以前注册的帐号去登录,便会出现错误,提示"数据检验失败,无效数据!expired_error".
为什么会出现此错误?想不通,于是去查看源代码...
PHPWind中passport_client.php
其中$timestamp为全局变量,在global.php中定义为$timestamp = time();,是当前脚本运行的时间戳.
$userdb['time']为ShopEx中传过来的加密变量解码后的时间戳,
此条if语句,就是判断这两个时间戳是否大于3600秒,如果是,就提示错误.
再看ShopEx中PHPWind插件passport.phpwind.php
$aMember这里应该是一个存有对应$userId注册信息的数组,看到regtime大家应该知道问题所在了.
这里$member['time']终始等于$userId对应的注册时间,只要注册时间超过一个小时(3600秒)的用户,当然就不能登录了.
修改方法大家到此也应该明白了,把'time'=$aMember['regtime']改成'time'=time(),我想插件设计人员的初衷也应该是这样的.
在论坛上提交了BUG的报告,现在补丁已经发布了,论坛中可找到。