原帖由 freddy 于 2005-10-22 22:04 发表
################################
##HACK名称:[增强]自动判断星座,生肖整合(身份表格 & 个人资料)
##作者:小优格格
##整理+修改FOR D4:Freddy
##适用版本:D4
##数据库升级:无
## ...
经过研究,viewpro页面的bug可以解决,还是我来告诉大家方法吧。
其他都按照楼主的方法,在viewpro.php内原增加代码
- //------------------------------------------------------自动判断星座,生肖整合Start
- $birthdate = "$birthday[1]$birthday[2]"; //诞生月份日期
- $member['horoimg'] = horoimg($birthdate);
- $member['horoname'] = horoname($birthdate);
- $member['yearimg'] = yearimg($birthday[0]);
- $member['yearname'] = yearname($birthday[0]);
- //------------------------------------------------------自动判断星座,生肖整合End
复制代码
修改为
- //------------------------------------------------------自动判断星座,生肖整合Start
- $birthdate = "$month$day"; //诞生月份日期
- $member['horoimg'] = horoimg($birthdate);
- $member['horoname'] = horoname($birthdate);
- $member['yearimg'] = yearimg($year);
- $member['yearname'] = yearname($year);
- //------------------------------------------------------自动判断星座,生肖整合End
复制代码
这样就ok了。
为何呢?
因为discuz4.0的viewpro.php里对年月日的处理,相比2.5f sp1略有不同。
2.5f sp1
- $birthday = explode('-', $member['bday']);
- $member['bday'] = $dateformat;
- $member['bday'] = str_replace('n', $birthday[1], $member['bday']);
- $member['bday'] = str_replace('j', $birthday[2], $member['bday']);
- $member['bday'] = str_replace('Y', $birthday[0], $member['bday']);
- $member['bday'] = str_replace('y', substr($birthday[0], 2, 4), $member['bday']);
复制代码
4.0
- list($year, $month, $day) = explode('-', $member['bday']);
- $member['bday'] = intval($year) ? $dateformat : preg_replace("/[^nj]*[Yy][^nj]*/", '', $dateformat);
- $member['bday'] = str_replace('n', $month, $member['bday']);
- $member['bday'] = str_replace('j', $day, $member['bday']);
- $member['bday'] = str_replace('Y', $year, $member['bday']);
- $member['bday'] = str_replace('y', substr($year, 2, 4), $member['bday']);
复制代码
仔细看哦,是不是已经看出区别了,所以原代码出错也就正常了。
至于在viewthread.php里为何又显示正常呢?
因为该文件内对会员生日的数据是通过新增"m.bday"查询解决的,discuz4.0原程序没有对生日"bday"字段数据进行解析,自然没有问题了。 |