如何将脚本按原样显示出来?请大家多多指点:)

sure9961 2004-04-05 04:37:20
我做了一个留言版,其中有几个文本框和一个文本区;请问如何把在这些区域输入的html代码和javascript代码按原样输出。

或者只要能屏蔽也可以。我试图用下面的函数
<%
Function HTMLEncode(fString)
if not isnull(fString) and fString <> "" then
fString = Replace(fString, ">", ">")
fString = Replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
fString = Replace(fString, CHR(39), "'")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")
fString = Replace(fString, CHR(10), "<BR> ")
HTMLEncode = fString
end if
End Function
%>
来屏蔽,但是当在任何一个区域输入<script language="javascript">
时部分页面就不能正常显示。

望高手们指点,在线等。
...全文
13 点赞 收藏 19
写回复
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
sure9961 2004-04-06
哦,终于明白了——我的content=server.htmlencode(request.form("content"))放的位置不对,该在
writer=request.form("writer")
unit=request.form("unit")
email=request.form("email")
tel=request.form("tel")
ip=request.servervariables("remote_addr")
title=request.form("title")

content=server.htmlencode(request.form("content"))---注意这里

谢谢各位的关注和指点,谢谢大家。
回复
Function HTMLEncode(fString)

你写的这个函数好像也没有用上啊~~~~
rs("content")=hemlencode(content)
回复
zjg791015 2004-04-06
用你贴出来的那个函数加上一楼朋友补充的那几条就应该可以实现了啊!不就是对< > " " 空格 回车 等进行一下过滤就可以了,有那么复杂吗?
回复
sure9961 2004-04-06
其中addok.asp会给用户一个留言成功的提示,然后通过链接进入all.asp查看。
回复
sure9961 2004-04-06
下面是我的源文件:
'add.asp用于添加新纪录
'--------------------------------
<%@ language=vbscript%>
<!--#include file="top.asp"-->
<!--#include file="adovbs.asp"-->
<!--#include file="conn.asp"-->

<%
dim title,content,writer,tel,email,unit,ip

writer=request("writer")
unit=request("unit")
email=request("email")
tel=request("tel")
ip=request.servervariables("remote_addr")

title=request("title")
content=request("content")

dim rs
set rs=server.createobject("adodb.recordset")
rs.cursortype=adopenkeyset
rs.locktype=adlockoptimistic
rs.open"message",conn,1,3
%>

<%
if writer="" then
response.write"请写上您的尊称!"
response.end
end if
%>

<%
if title="" then
response.write"请填写留言标题!"
response.end
end if
%>

<%
if content="" then
response.write"请填写留言内容!"
response.end
end if
%>

<%
Function HTMLEncode(fString)
if not isnull(fString) and fString <> "" then
fString = Replace(fString, ">", ">")
fString = Replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
fString = Replace(fString, CHR(39), "'")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")
fString = Replace(fString, CHR(10), "<BR> ")
HTMLEncode = fString
end if
End Function
%>

<%
rs.addnew
rs("title")=title
rs("content")=content
rs("writer")=writer
rs("unit")=unit
rs("email")=email
rs("tel")=tel
rs("ip")=ip
rs.update
%>

<%
conn.close
set rs=nothing
set conn=nothing
%>

<%
response.redirect"addok.asp"
%>
---------------------------------------------
'all.asp——用于显示所有留言
'--------------------------------------------
<%@ LANGUAGE="VBSCRIPT"%>
<!--#include file="refresh.asp" -->
<!--#include file="top.asp" -->
<!--#include file="page.asp"-->
<!--#include file="conn.asp"-->
<%
dim objrst,strSQL,iPageCount,CurPage,strUrl,recordnums,answer
SET objRst=Server.CreateObject("ADODB.RECORDSET")

strSQL="SELECT * FROM message order by id desc"
objRst.Open strSQL,conn,3,3
' 打开数据记录
%>

<%
if objRst.eof or objRst.bof then
response.write"sorry,当前留言为空!"
response.end
end if
%>

<%
objRst.PageSize=3
' 设置单页的数据记录数
iPageCount=objRst.PageCount
' 定义了一个页码数量的变量
If Len(Request.QueryString("Page"))=0 Then
CurPage=1
Else
CurPage=CInt(Request.Querystring("Page"))
End If
' 得到当前的页码
objRst.AbsolutePage=CurPage
' 设置记录集中的当前页
' 开始调用显示翻页的函数,显示页数栏
' 函数原型:ShowPageBar(TotalPage,CurPage,strUrl)
strUrl="all.asp"
' 定义连接的URL,可以用我们自己的页面地址
ShowPageBar iPageCount,CurPage,strUrl
' 调用完成
%>

<%
for recordnums=1 to objRst.pagesize
%>

<center>
<table width=760 border=1 align="center" cellspacing=1 bordercolor="#999999" bgcolor="#f0f0e6" style="border-collapse: collapse">
<tr>
<td width="100" height="28" align="center" > <font size="2">标题</font></td>
<td width="160" height="28" align="center" ><font size="2" ><%=objRst("title")%></font></td>
<td width="100" height="28" align="center"> <font size="2">作者</font></td>
<td width="150" height="28" align="center"><font size="2" ><%=objRst("writer")%></font></td>
<td width="100" height="28" align="center"><font size="2">IP地址</font></td>
<td width="150" height="28" align="center" >
<p><font size="2"><%=objRst("ip")%></font></p>
</td>
</tr>
<tr>
<td align="center" height="28" width="100"> <font size="2">内容</font></td>
<td height="28" colspan="5" align="center" ><div align="left"><font size="2" ><%=objRst("content")%></font>
</div></td>
</tr>
</table>


<br>
<%
objRst.movenext
if objRst.eof then
exit for
end if
next
conn.Close
SET objRst=NOTHING
SET conn=NOTHING
%>
<!--#include file="bottom.asp"-->
'-------------------------------------------------------
回复
wj253 2004-04-06
把HTML标记转义输出
回复
jiank 2004-04-06
楼主贴的方法是正确的,可能其它处理环节有问题,检查其他环节,不行的话可以贴出来大家看。我写了BBS,就这样处理的,没问题
回复
chendongqiang 2004-04-06
Function FilterJS(v)
if not isnull(v) then
dim t
dim re
dim reContent
Set re=new RegExp
re.IgnoreCase =true
re.Global=True
re.Pattern="(&#)"
t=re.Replace(v,"<I>&#</I>")
re.Pattern="(javascript)"
t=re.Replace(t,"<I>&#106avascript</I>")
re.Pattern="(jscript:)"
t=re.Replace(t,"<I>&#106script:</I>")
re.Pattern="(js:)"
t=re.Replace(t,"<I>&#106s:</I>")
re.Pattern="(value)"
t=re.Replace(t,"<I>&#118alue</I>")
re.Pattern="(about:)"
t=re.Replace(t,"<I>about:</I>")
re.Pattern="(file:)"
t=re.Replace(t,"<I>file:</I>")
re.Pattern="(document.cookie)"
t=re.Replace(t,"<I>documents&#46cookie</I>")
re.Pattern="(vbscript:)"
t=re.Replace(t,"<I>&#118bscript:</I>")
re.Pattern="(vbs:)"
t=re.Replace(t,"<I>&#118bs:</I>")
re.Pattern="(on(mouse|exit|error|click|key))"
t=re.Replace(t,"<I>&#111n$2</I>")
FilterJS=t
set re=nothing
end if
End Function
调用这个函数就可以了。

回复
sure9961 2004-04-06
大家帮忙看看吧,这个问题很难吗?
回复
sure9961 2004-04-06
尽管用server.htmlencode(request.form("textarea"))的方法做了处理,但显示页面上凡是输入<script language="javascript">的文本框和文本区的内容都显示为空白,而且该页后面的记录也显示不出来了。
回复
iloveyaner 2004-04-06
出什么问题?
回复
sure9961 2004-04-06
s1ihome(i believe i can fly)说server.htmlencode(request.form("textarea"))的方法可以,是不是我的输出方法又问题呢
我用的是
<%=rs("name1")%>
<%=rs("name2")%>
<%=rs("name3")%>

请大家多多指点呀

回复
sure9961 2004-04-06
server.htmlencode(request.form("textarea"))的方法我试过了,不行。

不知道老四的方法怎么,不知道该怎么用?
请高手们多指点啊

在线等。



回复
sure9961 2004-04-06
fgfgfg
回复
lhdnxx 2004-04-05
想学习,顶一下。
回复
在这部分提交的时候用server.htmlencode(request.form("textarea"))

这个问题应该主要出在双引号部分吧,
回复
sure9961 2004-04-05
chendongqiang(老四) ,能说得具体点吗?不好意思,我太菜了不知道该怎么用。
回复
dayanmao 2004-04-05
楼主的办法还解决不了的话我只好学习了...
回复
chendongqiang 2004-04-05
re.Pattern="(javascript)"
t=re.Replace(t,"<I>&#106avascript</I>")
re.Pattern="(jscript:)"
t=re.Replace(t,"<I>&#106script:</I>")
re.Pattern="(js:)"
t=re.Replace(t,"<I>&#106s:</I>")
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告