- 主题:[smth]web下显示ASCII色彩的问题
一直看到smth系统在web下显示文章时都是黑白的,以为还没有实现相关的功能呢,
结果今天碰巧在web看到了一个彩色的进版画面,才发现已经有了相关的函数了,
只要先:
html_init("gb2312");
再:
echo bbs_printansifile($filename);
就可以了。不过不知道为什么除了进版画面之外的地方都没有用这个函数?而是
用了一个jscon.php来显示帖子,好像是说用javascript方式显示帖子,没看明白
为什么要这么做。
本来在调用 jscon.php 之前先 html_init("gb2312"); 一下的话也可以使回复的
帖子中引用的原文部分以浅蓝色显示,这样看起来舒服多了;不过这样做的话签
名档里的颜色还是显示不出来(没看出是什么原因,谁能帮我看一下?),最后
只好改成下面这样:
bbscon.php里把:
----------------------------------------------------------------------
<font class="content">
<script language="Javascript" src="jscon.php?ftype=<?php echo $ftype; ?>&bid=<?php echo $brdarr["BID"]; ?>&id=<?php echo $articles[1]["ID"]; ?>">
</script>
</font>
----------------------------------------------------------------------
改为:
----------------------------------------------------------------------
<?php
$filename=bbs_get_board_filename($board, $articles[1]["FILENAME"]);
$fp = fopen($filename, "r");
if ($fp == FALSE) {
html_error_quit("对不起,找不到您要打开的文章,请向管理员报告。");
}
fclose($fp);
if (cache_header("public",filemtime($filename),300))
return;
html_init("gb2312");
echo bbs_printansifile($filename);
?>
----------------------------------------------------------------------
bbstcon.php里把:
----------------------------------------------------------------------
<font class="content">
<script language="Javascript" src="/jscon.php?bid=<?php echo $bid; ?>&id=<?php echo $article["ID"]; ?>">
</script>
</font>
----------------------------------------------------------------------
改为:
----------------------------------------------------------------------
<?php
$filename=bbs_get_board_filename($board, $article["FILENAME"]);
$fp = fopen($filename, "r");
if ($fp == FALSE) {
html_error_quit("对不起,找不到您要打开的文章,请向管理员报告。");
}
fclose($fp);
if (cache_header("public",filemtime($filename),300))
return;
html_init("gb2312");
echo bbs_printansifile($filename);
?>
----------------------------------------------------------------------
这样改了之后阅读单个帖子或同主题阅读的时候帖子里引用的原文是浅蓝色,签名档
里的颜色也可以显示出来了。
我在我们站上现在这样改了一下,有时会产生下面这样的警告:
----------------------------------------------------------------------
Warning: Cannot add header information - headers already sent by (output started at /home/bbswww/html/funcs.php:269) in /home/bbswww/html/funcs.php on line 251
----------------------------------------------------------------------
把php.ini里的 display_errors = On 改成 display_errors = Off 后就不显示这个
警告了。不知道这样改会不会引起什么不良后果?
--
FROM 202.120.111.*
忘了写了,改了之后的效果可以到我们这里看看,顺便帮忙看看有没有什么毛病:
http://bbs.ecust.edu.cn
【 在 nfeng (聂风) 的大作中提到: 】
: 一直看到smth系统在web下显示文章时都是黑白的,以为还没有实现相关的功能呢,
: 结果今天碰巧在web看到了一个彩色的进版画面,才发现已经有了相关的函数了,
: 只要先:
: ...................
--
FROM 202.120.111.*
【 在 KCN (毒中之毒~最近忙死了) 的大作中提到: 】
: 标 题: Re: [smth]web下显示ASCII色彩的问题
: 发信站: BBS 水木清华站 (Sat May 1 20:07:51 2004), 转信
:
: 水木由于效率和Web发展的原因,关闭了web下ascii彩色的显示。但是
: 接口还是留着的。那个already的错误,是多次设置header造成的。找找为
: 啥调用了多次输出头的函数的行了
我估计是下面这句引起的:
if (cache_header("public",filemtime($filename),300))
return;
不过不知道这句是做什么用的,如果去掉它的话有没有什么不良影响?
: 【 在 nfeng (聂风) 的大作中提到: 】
: : 一直看到smth系统在web下显示文章时都是黑白的,以为还没有实现相关的功能呢,
: : 结果今天碰巧在web看到了一个彩色的进版画面,才发现已经有了相关的函数了,
: : 只要先:
: : ...................
:
: --
: // // ╲ ╱// ◢\◤ ﹋﹌
: 恐龙饶命! 吼~~~ ◢ ◥ ◢\ ﹋﹌
: 〇 ─ ◢ === ◥ ◥ ﹋﹌
: ╰ ╲ ▇▆▅▄▃ / ╰ ◢◤◣ . ■
: ▇▆▅▄▃▂ ◢◤ ◥|||||◤◥
: 怕KL的帅帅的KCN ▇▆▅▄▃▂ ◥
:
:
: ※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.4.19]
--
FROM 202.120.111.*
把它注释掉,然后把同主题阅读里的 html_init("gb2312"); 放到循环外面后
就不报错了。
【 在 lepton.bbs@ytht.net (在黑夜中等待黎明) 的大作中提到: 】
: 标 题: Re: [smth]web下显示ASCII色彩的问题
: 发信站: YTHT (Sat May 1 20:28:12 2004)
: 转信站: SMTH!maily.cic.tsinghua.edu.cn!news.happynet.org!YTHT
:
: 响应浏览器发过来的if modify since 头
: 可以增加cache机会 不重传没有改变的页面
:
: 【 在 nfeng@smth.org-SPAM.no (聂风) 的大作中提到: 】
: : 【 在 KCN (毒中之毒~最近忙死了) 的大作中提到: 】
: : : 标 题: Re: [smth]web下显示ASCII色彩的问题
: : : 发信站: BBS 水木清华站 (Sat May 1 20:07:51 2004), 转信
: : : 水木由于效率和Web发展的原因,关闭了web下ascii彩色的显示。但是
: : : 接口还是留着的。那个already的错误,是多次设置header造成的。找找为
: : : 啥调用了多次输出头的函数的行了
: : 我估计是下面这句引起的:
: : if (cache_header("public",filemtime($filename),300))
: : ...................
: --
: 开户行:中国农业银行北京市分行 收款人:吴涛 帐号:95599 8001 42075 33812 (金穗卡)
: 开户行:中国建设银行北京市分行 收款人:吴涛 帐号:4367 4200 1262 0125 407 (龙卡)
: 开户行:中国工商银行北京市分行 收款人:吴涛 帐号:9558 8002 0010 6061084 (灵通卡)
: 开户行:招商银行北京市分行 收款人:吴涛 帐号:0010 29437501 (一卡通)
: 开户行:交通银行北京市分行 收款人:吴涛 帐号:405512 1091 4081807 (太平洋卡)
: 开户局:北京苏州街邮电局 (邮编100089) 户名:吴涛 活期帐号:60 1000089 2 00906688
:
: ※ 来源:.一塌糊涂 BBS ytht.net.[FROM: 220.249.10.10]
--
FROM 202.120.111.*
最终决定把php.ini里的 output_buffering 打开,代码里的那句判断cache_header
还是留着吧,这样也不会报错了,是不是也一样能增加cache的机会呢?
【 在 nfeng (聂风) 的大作中提到: 】
: 标 题: Re: [smth]web下显示ASCII色彩的问题
: 发信站: BBS 水木清华站 (Sat May 1 20:57:05 2004), 转信
:
: 把它注释掉,然后把同主题阅读里的 html_init("gb2312"); 放到循环外面后
: 就不报错了。
:
: 【 在 lepton.bbs@ytht.net (在黑夜中等待黎明) 的大作中提到: 】
: : 标 题: Re: [smth]web下显示ASCII色彩的问题
: : 发信站: YTHT (Sat May 1 20:28:12 2004)
: : 转信站: SMTH!maily.cic.tsinghua.edu.cn!news.happynet.org!YTHT
: :
: : 响应浏览器发过来的if modify since 头
: : 可以增加cache机会 不重传没有改变的页面
: :
: : 【 在 nfeng@smth.org-SPAM.no (聂风) 的大作中提到: 】
: : : 【 在 KCN (毒中之毒~最近忙死了) 的大作中提到: 】
: : : : 标 题: Re: [smth]web下显示ASCII色彩的问题
: : : : 发信站: BBS 水木清华站 (Sat May 1 20:07:51 2004), 转信
: : : : 水木由于效率和Web发展的原因,关闭了web下ascii彩色的显示。但是
: : : : 接口还是留着的。那个already的错误,是多次设置header造成的。找找为
: : : : 啥调用了多次输出头的函数的行了
: : : 我估计是下面这句引起的:
: : : if (cache_header("public",filemtime($filename),300))
: : : ...................
: : --
:
: ※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.111.*]
--
FROM 202.120.111.*
能解释一下那个php是怎么用javascript来帮助 cache 的么?我本来是想在jscon.php
里改的,就是没看懂它是什么意思才只好把它替换掉了。
【 在 windinsn (雪域清风) 的大作中提到: 】
: 用javascript的目的是为了cache需要 否则bbstcon.php的cache就没有多大实际意义了。
: 你这样做好像有2个html_init了,php会出现warning。
--
FROM 202.120.111.*
不错,这样改比我原来的方法好多了,我说怎么加了个 html_init() 就变彩色了,
原来是里面选了 ansi 的 css 。
【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: 标 题: Re: [smth]web下显示ASCII色彩的问题
: 发信站: 牧场物语 (Sun May 2 02:29:59 2004)
: 转信站: SMTH!maily.cic.tsinghua.edu.cn!news.bylinux.net!Stanford
:
: 这样就能显示彩色了。bbstcon.php同理不过我没有试验。bbs_printansifile()函数的
: 问题有:第一,不支持显示附件,所以有附件的站点不可能用这个方案。比较猥琐的临时
: 方案就是判断这个fileheader->attachment是不是true,如果是就改用原来的js。
这样有什么不妥么?为什么说是“猥琐”的方案?
: 第二,bbs_printansifile()对一些特殊表格符号处理有问题。你可以在web下面到smth的
: netresources版看进版画面(或者发表文章也可以)。原因是有一些特殊的表格记号的
: 后半个字节恰好是[或者],这样bbs_printansifile()误以为和ubb有关系所以出了bug。
: 嗯,没了。
要怎样才能让 bbs_printansifile() 认为是 ubb 呢?怎么我在帖子里用了
ubb 代码总是没效果呢?
: 【 在 nfeng@smth.org-SPAM.no (聂风) 的大作中提到: 】
: : 一直看到smth系统在web下显示文章时都是黑白的,以为还没有实现相关的功能呢,
: : 结果今天碰巧在web看到了一个彩色的进版画面,才发现已经有了相关的函数了,
: : 只要先:
: : html_init("gb2312");
: : 再:
: : echo bbs_printansifile($filename);
: : 就可以了。不过不知道为什么除了进版画面之外的地方都没有用这个函数?而是
: : 用了一个jscon.php来显示帖子,好像是说用javascript方式显示帖子,没看明白
: : 为什么要这么做。
: : 本来在调用 jscon.php 之前先 html_init("gb2312"); 一下的话也可以使回复的
: : ...................
:
: --
:
: ※ 来源:·牧场物语 bbs.stanford.edu·[FROM: FARM]
--
FROM 202.120.111.*
【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: 标 题: Re: [smth]web下显示ASCII色彩的问题
: 发信站: 牧场物语 (Sun May 2 03:50:30 2004)
: 转信站: SMTH!maily.cic.tsinghua.edu.cn!news.bylinux.net!Stanford
:
: : 【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: : : 问题有:第一,不支持显示附件,所以有附件的站点不可能用这个方案。比较猥琐
: : : 方案就是判断这个fileheader->attachment是不是true,如果是就改用原来的js。
: : 这样有什么不妥么?为什么说是“猥琐”的方案?
:
: 主要是有附件的贴子就不显示彩色了,感觉有点不爽而已,只是这个方法过于简单,所以
: 可以试用一下。判断方法就是if ($articles[something]["ATTACHPOS"] > 0)
嗯,我试了用等于0表示没有附件否则表示有附件,这样的话没有附件的时候颜色
能正常显示了。但是有碰到一个怪问题:我前几天测试的时候可以上传附件的,
正式切换前重新编译了一次,编译好后一直没试过附件功能,刚才才发现无法
上传附件了,即时恢复到我修改asci显示之前的代码也不行。检查了一下
~bbs/boards/_attach/ 目录下已经有了我上传时选择的附件文件了,但是帖子里
却没有,帖子的标题前面也没有带附件时的那个“@”标记。这种情况可能是哪里
出了问题?
:
: : : 第二,bbs_printansifile()对一些特殊表格符号处理有问题。你可以在web下面到sm
: : : netresources版看进版画面(或者发表文章也可以)。原因是有一些特殊的表格记
: : : 后半个字节恰好是[或者],这样bbs_printansifile()误以为和ubb有关系所以出了bu
: : 。
: : : 嗯,没了。
: : 要怎样才能让 bbs_printansifile() 认为是 ubb 呢?怎么我在帖子里用了
: : ubb 代码总是没效果呢?
:
: 这个我不知道,有机会一起研究研究吧。
:
: --
:
: ※ 来源:·牧场物语 bbs.stanford.edu·[FROM: FARM]
--
FROM 202.120.110.*
嗯,原来是开了tmpfs的缘故,现在好了。
ps:那个html_init()是这么写的:
---------------------------------------------------------------------
void html_init()
{
int style;
printf("Content-type: text/html; charset=%s\n\n\n", CHARSET);
printf("<html>\n");
printf("<head>\n");
printf("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">\n", CHARSET);
style = atoi(getparm("STYLE"));
switch (style) {
case 0: /* default color, big font */
printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\">\n", CSS_FILE_BIGFONT);
printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"/ansi-web-middle.css\">\n");
break;
case 1:
default: /* default color, small font */
printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\">\n", CSS_FILE);
printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"/ansi-web-small.css\">\n");
}
printf("</head>");
}
--------------------------------------------------------------------------
从程序上看即时我不加上那条
<link rel="stylesheet" type="text/css" href="/ansi.css"/>
原来的代码里调用了html_init()后也应该生成两条"<link ........>",但实际上
却只输出了前面的那条:
<link rel="stylesheet" type="text/css" href="/default-bf.css"/>
而没有输出:
<link rel="stylesheet" type="text/css" href="/ansi-web-small.css">
后面这条为什么没输出来呢?如果这条正常输出的话跟本就不用我再加那条link了
【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: 标 题: Re: [smth]web下显示ASCII色彩的问题
: 发信站: 牧场物语 (Sun May 2 06:30:57 2004)
: 转信站: SMTH!maily.cic.tsinghua.edu.cn!news.bylinux.net!Stanford
:
: 你这个问题我碰见过,看一下 phpbbslib.c 里面的 bbs_postarticle() 有这么一段
: #if USE_TMPFS==1
: snprintf(buf,MAXPATH,"%s/home/%c/%s/%d/upload",TMPFSROOT,toupper(curre
: user->userid[0]), currentuser->userid,getcurrentuinfo_num());
: #else
: snprintf(buf,MAXPATH,"%s/%s_%d",ATTACHTMPPATH,currentuser->userid,getc
: rentuinfo_num());
: #endif
: 这里没有听从site.php里面的getattachtmppath()函数(可能也没有特别简单的解决办法)
: 有两个解决办法,一个是site.h里面USE_TMPFS改回0,不过似乎不推荐这么干。
: 还有一个就是你参考smth的site.php改你的site.php里面的getattachtmppath()函数。
: 这个地方不知道smthbbs的代码是不是应该改进一下。
:
: 【 在 nfeng@smth.org-SPAM.no (聂风) 的大作中提到: 】
: : 【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: : : 标 题: Re: [smth]web下显示ASCII色彩的问题
: : : 发信站: 牧场物语 (Sun May 2 03:50:30 2004)
: : : 转信站: SMTH!maily.cic.tsinghua.edu.cn!news.bylinux.net!Stanford
: : : 主要是有附件的贴子就不显示彩色了,感觉有点不爽而已,只是这个方法过于简单,所
: : 以
: : : 可以试用一下。判断方法就是if ($articles[something]["ATTACHPOS"] > 0)
: : 嗯,我试了用等于0表示没有附件否则表示有附件,这样的话没有附件的时候颜色
: : 能正常显示了。但是有碰到一个怪问题:我前几天测试的时候可以上传附件的,
: : 正式切换前重新编译了一次,编译好后一直没试过附件功能,刚才才发现无法
: : 上传附件了,即时恢复到我修改asci显示之前的代码也不行。检查了一下
: : ...................
:
: --
:
: ※ 来源:·牧场物语 bbs.stanford.edu·[FROM: FARM]
--
FROM 202.120.110.*
-_-!
通宵之后头都晕了,一个是c一个是php都没看出来...
【 在 atppp (Big Mouse) 的大作中提到: 】
: html_init()在bbs2www/html/funcs.php里面,你找错地方了吧。
--
FROM 202.120.110.*