- 主题:[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.*
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 代码总是没效果呢?
这个我不知道,有机会一起研究研究吧。
--
你这个问题我碰见过,看一下 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的代码是不是应该改进一下。
--
nfeng gg,在bbscon.php里面用
bbs_printansifile(
$filename,1,$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);
就可以同时支持颜色和附件了。bbs_printansifile()其实支持附件只不过以前我们没加
后面的attachlink参数。恩,不过这个方法据说是deprecated,具体原因你问老大们~~
另外,如果你只是想引文变蓝,而别的颜色都不要,你只要加上那个ansi的css文件就可以了,别的一概都不用改。事实上js产生的东东,对引文有特殊处理,只是那个css没有加进来所以没有颜色。
【 在 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显示之前的代码也不行。检查了一下
: ...................
--