zb4问题解答
后来改装ZB4,用的是zb41pl8_GB2312。安装过程中出现“管理员数据表生成失败”,按照在这里查到的帖子,修改schema.sql,安装成功。但是在登录时,还有其他不知什么时候,有时会出现错误信息:
Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
好像登录和发帖子都不受影响,但不知道会不会影响其他操作。
另外在使用时还有两个问题:
1. 时差怎么调整啊?
2. 如果主要用于写日志,那么日志的时间在哪里改呢?在这里查过,好像答案只有在数据库里改,那样太麻烦了,有没有简单一点的方法啊?
我是新手,看到这里的帖子里有不少提到有教程在http://zbfans.net/article/,但这个链接总是回到首页,想自己查也查不到,只能到这里来提问了。希望有经验的帮忙看一下,先谢谢了!
1. 打开lib.php文件在顶端 <? 下面插入如下代码:
ini_set('register_globals','1');
ini_set('session.bug_compat_42','1');
ini_set('session.bug_compat_warn','0');
ini_set('session.auto_start','1');
2. 时差? 不知道。具体详细说一下。。
3. 修改时间步骤如下:
1. 打开bbs下的write.php文件查找以下部分:
/******************************************************************************************
* 检查发帖方式
*****************************************************************************************/
if($mode=="modify") {
// 是秘帖或密码输入错误或不是管理员时返回
if($data[is_secret]&&!$is_admin&&$data[ismember]!=$member[no]&&$HTTP_COOKIE_VARS[zb_s_check]!=$setup[no]."_".$no) error("沥惑利牢 规过栏肺 荐沥窍技夸");
$name=stripslashes($data[name]); // 名字
$email=stripslashes($data[email]); // 电子邮件
$homepage=stripslashes($data[homepage]); // 主页
$subject=$data[subject]=stripslashes($data[subject]); // 主题
$subject=str_replace("\"",""",$subject);
$homepage=str_replace("\"",""",$homepage);
$name=str_replace("\"",""",$name);
$sitelink1=str_replace("\"",""",$sitelink1);
$sitelink2=str_replace("\"",""",$sitelink2);
$memo=stripslashes($data[memo]); // 内容
$sitelink1=$data[sitelink1]=stripslashes($data[sitelink1]);
$sitelink2=$data[sitelink2]=stripslashes($data[sitelink2]);
就在 $sitelink2=$data[sitelink2]=stripslashes($data[sitelink2]); 下面添加如下代码:
//修改发表日期 $reg_date=$data[reg_date];
2. 打开 bbs下的write_ok.php文件查找如下部分
/***************************************************************************
* 是修改的帖子时
**************************************************************************/
if($mode=="modify"&&$no) {
if($s_data[ismember]) {
if(!$is_admin&&$member[level]>$setup[grant_delete]&&$s_data[ismember]!=$member[no]) Error("请用正确的方法修改帖子");
}
// 检查密码;;
if($s_data[ismember]!=$member[no]&&!$is_admin) {
if($password!=$s_data[password]) Error("密码错误");
}
// 删除文件
if($del_file1==1) {@z_unlink("./".$s_data[file_name1]);$del_que1=",file_name1='',s_file_name1=''";}
if($del_file2==1) {@z_unlink("./".$s_data[file_name2]);$del_que2=",file_name2='',s_file_name2=''";}
// 文件登陆
if($file_name1) {$del_que1=",file_name1='$file_name1',s_file_name1='$s_file_name1'";}
if($file_name2) {$del_que2=",file_name2='$file_name2',s_file_name2='$s_file_name2'";}
就在 if($file_name2) {$del_que2=",file_name2='$file_name2',s_file_name2='$s_file_name2'";}下面添加如下代码:
//日期变换
if(!$year) {
$reg_date= $reg_date_old;}
else {
$t_time = mktime($hour, $min, $sec, $mon, $day, $year);
$reg_date=$t_time;}
继续往下找。。。。。。。如下部分: 有三处。。大概在342行,377行,395行。
@mysql_query("update $t_board"."_$id set division='$division',headnum='$headnum',prev_no='$prev_no',next_no='$next_no',child='$child',depth='$depth',arrangenum='$arrangenum',father='$father',name='$name',email='$email',homepage='$homepage',subject='$subject',memo='$memo',sitelink1='$sitelink1',sitelink2='$sitelink2',use_html='$use_html',reply_mail='$reply_mail',is_secret='$is_secret',category='$category' $del_que1 $del_que2 where no='$no'") or error(mysql_error());
找到这三处后都给他们追加 reg_date='$reg_date'
追加的时候好好看看他们的格式,我是追加到category='$category' 的后面,不要忘了用逗号分割。
3. 打开你正使用的皮肤里的write.php文件在最下面(或者找个适当的位置)添加如下代码:
<? if($member[level] <= 1) { ?>
<?=$hide_notice_start?>
<!--- start日期修改-------->
<input type=hidden name='reg_date_old' value=<?=$reg_date ?>>
<tr>
<td align=right class=listnum width=80><img src=images/t.gif border=0 width=80 height=1><br>날짜수정 </td>
<td>
<table border=0 cellpadding=0 cellspacing=0>
<tr>
<td><input type="text" name="year" size="6" maxlength=4 class=input> 년 <input type="text" name="mon" size="4" maxlength=2 class=input> 월 <input type="text" name="day" size="4" maxlength=2 class=input> 일 (수정 안할시에는 그냥 놔두세요.)
<input type="hidden" name="hour" size="2" value="0">
<input type="hidden" name="min" size="2" value="0">
<input type="hidden" name="sec" size="2" value="0">
</td>
</tr>
</table>
</td>
</tr>
<!--- end日期修改 -------->
<?=$hide_notice_end?>
<?}?>
代码说明: 最上面一行<? if($member[level] <= 1) { ?> 和最下面一行<?}?> 是一对。说明只有最高管理员才能修改日期。
如你想把这个权限对会员开放的话,把上面二段代码删除就可以啦。
4. 结束 --使用方法: 点击修改进入修改模式。。。就看到啦。
第一个问题改了lib.php之后,警告已经没有了。
第二个问题是因为我用的主机在美国,显示出来的是美国当地时间,看着有些别扭。不知道ZB4可不可以把时间调整为北京时间。
第三个问题要花一点时间来试,因为现在使用还不太熟练。如果有问题,再来请教。
这两天试用过程中越来越喜欢这个程序,但又担心不懂韩文和程序,用起来会很麻烦。guny的帮助让我有了信心,非常感谢!
修改日期已经可以实现了。多谢!但还想请教,日期修改之后,怎么才能实现新日志排在前面,旧日志排在后面呢?这是和用的skin有关吗?
另外还有一个问题:登入后如果长时间没有操作,转到别的链接时,会出现错误信息:
Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at /home/super5/public_html/md/sisters/_head.php:10) in /home/super5/public_html/zb/lib.php on line 136
然后需要重新登入。问一下有什么方法可以去掉错误信息,直接提示需要重新登入吗?





1. 解决错误信息的方法: 打开_head.php文件把下段代码插入到顶端。
<? $_register_globals = (bool) ini_get('register_globals'); if (!$_register_globals) { if (function_exists('ini_set')) { ini_set('session.bug_compat_42', 0); ini_set('session.bug_compat_warn', 0); } } ?>剩下的明天再说吧。。我现在有事出去一下。