EDU511 国际专业IT教育服务门户
设为首页   加入收藏    联系我们
寻找IT教育内容合作伙伴
招聘教育网络编辑和运营门户高手
中讯IT教育2008年改版上线
寻找地方站运营伙伴QQ:59955917
中讯IT 技术成就未来
   你现在的位置:首页 >> 新闻系统 >> 程序设计 >> ASP >> ASP实例 >> 正文

如何让留言支持UBB

 
 
日期:08-04-20 21:26:30 点击: 来源:中讯IT
 
■首先,写这个好写,但显示表达起来就困难了,因为其中涉及的代码就是论坛本身ubb转换的部分,那是一个嵌套陷阱:(

■注意:如果您要转载,请查看你是否有HTML标签的屏蔽功能,如有,或者是采用ubb方法屏蔽的,那么,再查看您的编辑处理有没有格式的再转换功能,否则,您转了也是白转:编辑的时候所有代码都将会嵌套、乱套,会让你发疯的:D
p.s.好象经典也没提供发布时禁止ubb转换的功能-_-!


现在什么都高级了!之前留言啥都允许,包括html标签的执行,就搞破坏搞得人家留言本听你玩。
于是,站长火了,干脆把HTML标签<和>给屏蔽了。这下“双刃剑”的原理出现了:想要的HTML效果表达不了。
接着,终于开始了UBB标签代码的转换功能:即将自定义的UBB标签对应到需要执行的HTML标签功能。

■1,主要UBB转换函数文件,一定不能少的了:ubb.asp

本人采用猪飞飞BLOG原版ubb文件,并添加部分函数,以解决编辑含有<textarea>出现bug的问题
ubb.asp文件比较大,此处提供下载: http://www.pphelper.comhttp://img.maicoo.com/edu/2006-3/ubb.rar 
关于Smilies(content) 函数,即为笑脸转换功能。

■2,简单的一个调试数据库文件cnbruce.mdb

表名:article
字段名:artid(自动编号),ar_title(文本),ar_content(备注)

■3,连接数据库的连接文件conn.asp
没有什么可说的,注意你的路径正确性

<%
Dim db,conn,connstr
db="cnbruce.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
'connstr="Driver={microsoft access driver (*.mdb)};DBQ=" & Server.MapPath(db)&";uid=cnbruce;pwd=cnrose;"
conn.open connstr

function CloseDatabase
 Conn.close
 Set conn = Nothing
End Function
%>


■4,添加信息的页面addnews.asp

主要是FORM表单页和客户端检测


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]



基本流程:1,首次打开addnews.asp,判断request.Form("method")不等于"submit",所以,将不执行插入记录的asp程序,而是显示表单进行内容的输入。2,输入内容,同时做客户端检测。3,提取记录,插入数据库记录(注:为提高安全性,您可继续添加服务器端检测)4,返回首页index.asp

■5,显示记录的文件index.asp

主要是需要支持UBB标签的功能,其中注意的是通常用的[ html ]标签的解释,需要在客户端添加一函数

<script>
function runEx(cnbruce)  {
  cod=document.all(cnbruce)
  var code=cod.value;
  if (code!=""){
  var newwin=window.open('','','');  
  newwin.opener = null 
  newwin.document.write(code);  
  newwin.document.close();
}
}
</script>


有此函数。即可执行页面中所有含[ html ]标签的效果。
此函数和ubb.asp中的函数是对应的

function ubb_html(ubb_temp)
  ubb_temp_=ubb_temp
do while ubb_temp_ <> ""
  text=SearchUBB(ubb_temp_,"[html]","[/html]")
   if text<>"" then
    ltext=replace(text,"<br>",vbcrlf,1,-1,1)
    ltext=replace(ltext," ",chr(32),1,-1,1)
    ltext=msubb(ltext)
    Randomize
    rid="temp"&Int(100000 * Rnd)
    ltext="<TEXTAREA  rows=12 style='width:90%' class='bk' id='"&rid&"'>"<ext
    ubb_temp_=replace(ubb_temp_,"[html]"&text,ltext,1,1,1)
    ubb_temp_=replace(ubb_temp_,ltext&"[/html]",ltext&"</TEXTAREA><br>
<INPUT onclick=runEx('"&rid&"')  type=button value=运行代码 >
 [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]  ",1,1,1)
   else
    exit do
    end if
loop
ubb_html=ubb_temp_
end function


那么现在,index.asp所有源码给出


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]


注意其中的<%=ubb(unhtml(rs("ar_content")))%>,两个函数,千万不要弄颠倒。

这两个函数都是ubb.asp中的,unHtml()函数主要将回车空格等格式转换过来
还有,两个函数的包含关系同样不能颠倒,原理我想你也很清楚:)

■6,修改数据信息的页面editnews.asp

刚才在index.asp里面你也看到了,有个<a href="editnews.asp?artid=<%=rs("artid")%>">Edit</a>

那么下面给出