上一篇:ASP整合的一个SQL语句类 >>
让论坛可运行HTML或者Script源代码
这篇东西是我在开发TOL8.COM讨论组的时候学会的,涉及的内容比较多,所以不适合初级用户,他的目的就是让论坛可以发表规则的HTML或者Script原代码到文本框内,用户点击后就能看到运行效果,这对讨论技术的站点是很有必要的!
正 文
要看效果请先打开这个网址http://www.TOL8.com/pages/pages.asp?id=76
首先如果你是为利用ASP开发项目的,你肯定会做过一些管理新闻发布系统,或者BBS之类的东西,遇到一些发表源文件的地方,为了安全我们不得不做一些代码转换。
比如:tbStr = Replace(tbStr,"<","<")这就是将tbStr的那些输出后会影响页面的标签替换掉,当然实际的操作过程比我现在说的要复杂得多了! 下面就按照我自己的方法给大家介绍今天的内容,理解后就可以运用自如了!
<%
Function TOL8HTML(tbStr)
Dim result, l, CODETXT
if isNULL(tbStr) then
TOL8HTML=""
exit function
end if
l=len(tbStr)
result=""
CODETXT = ""
Dim i
For i = 1 to l
if Right(result,6) = "[CODE]" then
result = result
CODETXT = CODETXT + Mid(tbStr,i,1)
if Right(CODETXT,7) = "[/CODE]" then
result = result + CODETXT
end if
else
Select Case mid(tbstr,i,1)
Case "<"
result=result+"<"
Case ">"
result=result+">"
Case chr(13)
result = result + "<br>"
Case chr(34)
result=result+"""
Case "&"
result=result+"&"
Case chr(32)
if i+1<=l and i-1>0 then
if mid(tbStr,i+1,1)=chr(32) or mid(tbStr,i+1,1)=chr(9) or mid(tbStr,i-1,1)=chr(32) or mid(tbStr,i-1,1)=chr(9) then
result=result+" "
else
result=result+" "
end if
else
result=result+" "
end if
case chr(9)
result=result+" "
case else
result=result+mid(tbStr,i,1)
End Select
end if
next
TOL8HTML = result
End Function
%>
开发过论坛的朋友一眼就能看出上面这段代码是很典型的将HTML标记转换为安全字符的函数,调用的时候假如变量是strs, 方法就是 strs=TOL8HTML(strs)
只不过我加多了一段红色的代码部分这既是在论坛有调用源代码标签的提示后不执行下面的转换!如果你认为多余可以去掉试试,我也就不多说了, 随后我们还需要建立一个函数
<%
Function TOL8UBB
Dim CODE1, CODE2
CODE1 = "<table align=center width=""98%"""&_
" border=0 cellpadding=2 cellspacing=2><tr>"&_
"<td class=blank_2>表格内为可运行程序代码:"&_
"</td></tr><tr><td>"&_
" <TEXTAREA rows=12 cols=80 >"
CODE2 = "</TEXTAREA><BR> "&_
"<INPUT onclick=runCode() type=button"&_
" value=运行代码>"&_
"</td></tr><tr><td></td></tr></table>"
if Instr(tbStr,"[CODE]") > 0 and Instr(tbStr,"[/CODE]") > 0 then
tbStr = Replace(tbStr,"[CODE]",CODE1)
tbStr = Replace(tbStr,"[/CODE]",CODE2)
end if
end Function
%>
这就是当前台页面数据输出准备调用[CODE] [/CODE]之间源代码的时候我们需要做的一些替换,以上两断代码建议存储在一个ASP页面内,我们这里把他们保存为TOL8UBB.asp!
以上两个都完成了,我们该看看访客们要浏览时的页面lookPage.asp如何设计了,细心的朋友会发现第二段代码中再作替换的时候有个按钮加了一个JS函数的调用动作,而这个函数在哪里呢,当然就在这个lookPage.asp页面里了呀!我们先用include来将TOL8UBB.ASP包含进来然后加入下面这段JS
<Script>
function runCode() //本段JS来自经典论坛
{
var code=event.srcElement.parentElement.children[0].value;//即要运行的代码。
var newwin=window.open(@#@#,@#@#,@#@#); //打开一个窗口并赋给变量newwin。
newwin.opener = null // 防止代码对论谈页面修改
newwin.document.write(code); //向这个打开的窗口中写入代码code,这样就实现了运行代码功能。
newwin.document.close();
}
</Script>
最后在你把数据输出的时候先这里调用两个已经设计好了的函数如
strs = TOL8HTML(strs)
strs = TOL8UBB(strs)
Response.Write strs
就OK了……这东西是经过我反复实践才做出来的,其中还是有很不理想的地方,如果高手们你们能看出来或者直接就解决了,不要忘记和大家分享!
下一篇:给ASP程序多一点安全感 >>
相关文章:
- · 利用ASP打造网站论坛DIY -5
- · 利用ASP打造网站论坛DIY -4
- · 利用ASP打造网站论坛DIY -3
- · 利用ASP打造网站论坛DIY -3
- · 利用ASP打造网站论坛DIY -2
- · 利用ASP打造网站论坛DIY -1
- · ASP中简易用户访问控制-2
- · ASP中简易用户访问控制-1
- · 用弹出确认框来确认删除内容
- · ASP中换个行继续写程序
- · IE的模式对话框设计
- · 关于inc文件的解释
- · 超长字符的智能分页-支持HTML
- · 获得ASP的中文日期字符串
- · Response.Expires简述
- · 利用ASP+Jmail进行邮件群发的新思路
- · ASP计数器设计详解-2
- · ASP计数器设计详解-1
- · ASP智能搜索的实现
- · ASP链接MYSQL并读取数据的程序
- · 实现网页密码验证的两个基本方法
- · 计算文件的下载时间
- · 随机产生用户密码
- · Server.ScriptTimeOut:处理脚本运行时间长的方法
- · 插入Access记录后马上得到自动编号值的方法
- · ASP如何获取真实IP地址
- · 利用SMTP和ASP发送CDONTS电子邮件
- · CDONTS.NewMail组件介绍
- · 用CDONTS.NewMail实现发送Email
- · CDONTS.NewMail可以选用HTML格式发送Email
- · 保护你ASP页面的两种办法
- · Response 对象
- · Response 对象
- · 轻松打造ASP计数器
- · 网站设计中表单验证
- · 初学ASP编程易犯的一个致命程序问题及解决办法
- · 在ASP中执行Ping命令,并且返回结果
- · ASP获取客户端MAC地址
