| 本帖最后由 liuzhly 于 2010-01-25 17:57 编辑 
 方案一、发现很多人都有这种原因,而官方没有这原因,初步估计跟服务器时区有关!!!!
 
 
 
 一般php无论是在windows下还是linux下安装,其默认安装配置的时区都是与中国相差8小时,我们可以通过下面2方法解决它
 
 1,在php.ini中修改当地时区获取中国时间,可在php.ini中查找date.timezone并修改.
 windows下php.ini一般在:C:/WINDOWS/php.ini
 linux下php.ini一般在: /etc/php.ini
 
 date.timezone = "Asia/Chongqing"
 
 
 如果服务器无法修改时区,无法编辑PHP配置文件,设置方法,
 
 打开 common.php,在其顶部加上:
 
 date_default_timezone_set(PRC); 设置一下时区为中国!
 
 这样基本可以解决问题!大家测试一下,如果不行,使用方案二!
 
 
 方案二、出现那种现象,我查看了源代码,应该是 dateline 的时间问题
 
 function_common.php里:
 
 
 if($rule['cycletype'] == 1) {
 $today = sstrtotime(gmdate('Y-m-d', $_SGLOBAL['timestamp']+$_SCONFIG['timeoffset']*3600));
 //判断是否为昨天
 if($creditlog['dateline'] < $today && $rule['rewardnum']) {
 $creditlog['cyclenum'] =  0;
 $sql = 1;
 $newcycle = true;
 }
 }
 
 
 $today  使用转换函数,转换是今天,只要设置是东8区,系统返回中华人民共和国时间,但是 $creditlog['dateline'] 的时间是 $_SGLOBAL['timestamp'] ,如果你的PHP配置设置时区是中国,估计不存在什么问题,但是如果PHP配置默认,那么应该就是 $_SGLOBAL['timestamp']  与当前时间相差 8 小时 ..如果是这样,那么 if($creditlog['dateline'] < $today 只有在早晨 8点钟以后才成立,0-8点之间,更新一条记录,程序判断属于昨天,当然可以无限制刷分了~~
 
 解决方法:
 1、首先我没遇到这问题,我只是依照你们思路感觉应该是时区的问题,所以大家可以测试一下:
 使用第一种方法,更改PHP时区,在 COMMON.php里添加 date_default_timezone_set(PRC); 设置正确时区,希望大家测试一下,如果问题解决了,吱一声,告知其他朋友修改,如果没解决,也吱一声~~~
 2、方法2,修改代码:function_common.php里:修改成红色的代码:
 因为
 
 $today 是还原到目前时区的凌晨时间,就是:今天 00:00:00 ,$today1 就把检测的时间还原到 某天 00:00:00 ,检测一下是否一样,一样表示同一天,小宇表示昨天或者前天,这样也能解决问题,大家可以试试,还是:
 
 解决问题请吱声,没解决也吱声!
 
 
 if($rule['cycletype'] == 1) {
 $today = sstrtotime(gmdate('Y-m-d', $_SGLOBAL['timestamp']+$_SCONFIG['timeoffset']*3600));
 $today1 = sstrtotime(gmdate('Y-m-d', $creditlog['dateline']+$_SCONFIG['timeoffset']*3600));
 
 //判断是否为昨天
 if( $today1 < $today && $rule['rewardnum']) {
 $creditlog['cyclenum'] =  0;
 $sql = 1;
 $newcycle = true;
 }
 }
 |