- 主题:[smth]web下显示ASCII色彩的问题
我给个貌似更好的代码吧。修改bbscon.php:
<body>之前加上:
<link rel="stylesheet" type="text/css" href="/ansi.css"/>
这个是所有ansi控制符对应的<font>css,如果你直接用html_init("gb2312"),一些别的
页面风格会受到影响。然后,那个js附近改成这样:
<tr><td class="t5">
<font class="content">
<?php
/*
<script language="Javascript" src="jscon.php?ftype=<?php echo $ftype; ?>&bid=<?
php echo $brdarr["BID"]; ?>&id=<?php echo $articles[1]["ID"]; ?>">
</script> */
$filename=bbs_get_board_filename($board, $articles[1]["FILENAME"]);
if (!file_exists($filename))
html_error_quit("对不起,找不到您要打开的文章,请向管理员报告。");
echo bbs_printansifile($filename);
?>
</font>
</td></tr>
这样就能显示彩色了。bbstcon.php同理不过我没有试验。bbs_printansifile()函数的
问题有:第一,不支持显示附件,所以有附件的站点不可能用这个方案。比较猥琐的临时
方案就是判断这个fileheader->attachment是不是true,如果是就改用原来的js。
第二,bbs_printansifile()对一些特殊表格符号处理有问题。你可以在web下面到smth的
netresources版看进版画面(或者发表文章也可以)。原因是有一些特殊的表格记号的
后半个字节恰好是[或者],这样bbs_printansifile()误以为和ubb有关系所以出了bug。
嗯,没了。
【 在 nfeng@smth.org-SPAM.no (聂风) 的大作中提到: 】
: 一直看到smth系统在web下显示文章时都是黑白的,以为还没有实现相关的功能呢,
: 结果今天碰巧在web看到了一个彩色的进版画面,才发现已经有了相关的函数了,
: 只要先:
: html_init("gb2312");
: 再:
: echo bbs_printansifile($filename);
: 就可以了。不过不知道为什么除了进版画面之外的地方都没有用这个函数?而是
: 用了一个jscon.php来显示帖子,好像是说用javascript方式显示帖子,没看明白
: 为什么要这么做。
: 本来在调用 jscon.php 之前先 html_init("gb2312"); 一下的话也可以使回复的
: ...................
--
看看html_init()的作用吧,你要改就改<body>之前那个而不是自己加一个嘛 :)
现在你那个阅读文章的页面里面有两个这个:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
【 在 nfeng@smth.org-SPAM.no (聂风) 的大作中提到: 】
: 忘了写了,改了之后的效果可以到我们这里看看,顺便帮忙看看有没有什么毛病:
:
http://bbs.ecust.edu.cn--
FROM 128.12.155.*
不错,这样改比我原来的方法好多了,我说怎么加了个 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.*
nod,去年我们有过一个别的论坛的测试,细节太多了,总之就是如果是js产生页面,
squid会大大提高性能。如果不用squid而只用浏览器cache(利用if-modified header),
那直接产生html的性能会略高于js。但是这个问题涉及到太多因素,比方我自己站上把js改
回成原来的ansifile函数,出阅读文章的页面就会快很多。这个和服务器配置有关,另外一
个原因是浏览器实现相关。好像firebird还是什么浏览器有一个专门强调的问题就是IE在处
理表格上很垃圾,不收到</table>整个表格就不显示出来,搞得现在写大网页的人都小心翼
翼。js这个问题上也是,如果协调的不好,html后续的那些请求比方css,js尽管可能只要在
cache里面抓一下就可以了但是往往可能要开第二个http通道,因为目前为止
squid/httpd/IE之间keep-alive的处理还不是很协调。
还有了,那个js的问题,一直想说的,一起说了把。现在的效率还有提高的空间。
比方每行一个document.write,如果改成短点的函数名而不直接用这个,可以缩小传输数
据量。另外<>&和空格的html替换可以放到客户端去做,服务器上就都变化了一个增加了
load一个也增加了传输数据量,当然'"\还是要处理的。吹毛求疵了...嘿嘿。
【 在 flyriver@smth.org-SPAM.no (江~~继续努力) 的大作中提到: 】
: 如果再 web server 之前有一台 squid server 在做 cache 的话就很有用处,
: 否则用处不大。
: 【 在 nfeng (聂风) 的大作中提到: 】
: : 能解释一下那个php是怎么用javascript来帮助 cache 的么?我本来是想在jscon.php
: : 里改的,就是没看懂它是什么意思才只好把它替换掉了。
--
: 【 在 atppp@bbs.stanford.edu-SPAM.no (Big Mouse) 的大作中提到: 】
: : 问题有:第一,不支持显示附件,所以有附件的站点不可能用这个方案。比较猥琐的临
: : 方案就是判断这个fileheader->attachment是不是true,如果是就改用原来的js。
: 这样有什么不妥么?为什么说是“猥琐”的方案?
主要是有附件的贴子就不显示彩色了,感觉有点不爽而已,只是这个方法过于简单,所以
可以试用一下。判断方法就是if ($articles[something]["ATTACHPOS"] > 0)
: : 第二,bbs_printansifile()对一些特殊表格符号处理有问题。你可以在web下面到smth
: : netresources版看进版画面(或者发表文章也可以)。原因是有一些特殊的表格记号的
: : 后半个字节恰好是[或者],这样bbs_printansifile()误以为和ubb有关系所以出了bug
: 。
: : 嗯,没了。
: 要怎样才能让 bbs_printansifile() 认为是 ubb 呢?怎么我在帖子里用了
: ubb 代码总是没效果呢?
这个我不知道,有机会一起研究研究吧。
--
【 在 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.*
你这个问题我碰见过,看一下 phpbbslib.c 里面的 bbs_postarticle() 有这么一段
#if USE_TMPFS==1
snprintf(buf,MAXPATH,"%s/home/%c/%s/%d/upload",TMPFSROOT,toupper(current
user->userid[0]), currentuser->userid,getcurrentuinfo_num());
#else
snprintf(buf,MAXPATH,"%s/%s_%d",ATTACHTMPPATH,currentuser->userid,getcur
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显示之前的代码也不行。检查了一下
: ...................
--
似乎getattachtmppath()函数应该放进phpbbslib.c而不是留在site.php里面。
【 在 atppp (Big Mouse) 的大作中提到: 】
你这个问题我碰见过,看一下 phpbbslib.c 里面的 bbs_postarticle() 有这么一段
#if USE_TMPFS==1
snprintf(buf,MAXPATH,"%s/home/%c/%s/%d/upload",TMPFSROOT,toupper(current
user->userid[0]), currentuser->userid,getcurrentuinfo_num());
#else
snprintf(buf,MAXPATH,"%s/%s_%d",ATTACHTMPPATH,currentuser->userid,getcur
rentuinfo_num());
#endif
这里没有听从site.php里面的getattachtmppath()函数(可能也没有特别简单的解决办法)
有两个解决办法,一个是site.h里面USE_TMPFS改回0,不过似乎不推荐这么干。
还有一个就是你参考smth的site.php改你的site.php里面的getattachtmppath()函数。
这个地方不知道smthbbs的代码是不是应该改进一下。
--
嗯,原来是开了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.*
html_init()在bbs2www/html/funcs.php里面,你找错地方了吧。
【 在 nfeng (聂风) 的大作中提到: 】
: 嗯,原来是开了tmpfs的缘故,现在好了。
: ps:那个html_init()是这么写的:
: ---------------------------------------------------------------------
: ...................
--
FROM 128.12.155.*