| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 681 人关注过本帖
标题:求助:困惑已久的问题,help me !!!!
只看楼主 加入收藏
mengya
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2005-11-8
收藏
 问题点数:0 回复次数:8 
求助:困惑已久的问题,help me !!!!

为什么下面这段代码执行时,该页面的内容都执行两次,运行时弹出两个页面,进行两次入库呢?????????????!!!!



<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="cn.asp"-->
<%
Function killBadWords(str)
badword="妈妈的|你妈的|操|滚|黄片|我靠|fuck|bitch|他妈的|性爱|法轮功|法轮|falundafa|falun|主席|泽民|操你妈|三级片|洪志|锦涛|王八|王八蛋"
If Not(IsNull(badword) or isnull(Str)) Then
'通过split函数,badwords成了程度为16的一维叔祖
badwords = split(badword, "|")
'wordnum保存数组的元素个数
wordnum=UBound(badwords)
For i = 0 to wordnum
str = Replace(str, badwords(i), string(len(badwords(i)),"*"))
Next
killBadWords = str
End If
End Function
dim to_user,title,words
to_user=Trim(Request("to_user"))
title=Trim(Request("title"))
words=Trim(Request("words"))

dim rs_chk
set rs_chk=server.CreateObject("adodb.recordset")
rs_chk.open "select * from user1 where user_name='"&to_user&"'",cn,1,1
if rs_chk.eof then
response.Write "<script>alert('发送失败:收件人不存在');history.back();</script>"
response.End()
end if
dim rs
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from user1 where user_name='"&session("user_name")&"'",cn,1,1
If rs("vip")=False then
words=killBadWords(words )
title=killBadWords(title )
end if
If Not rs.Eof then
If rs("words_enable")=false then
response.Write "<script>alert('您是普通用户,一个月只能发送10条留言!');history.back();</script>"
response.End()
end if
end if
If rs("vip")=False then
if (Len(words)>200) then
response.Write "<script>alert('您是普通用户,发送留言的字数不能超过200个字!');history.back();</script>"
response.End()
end if
Else
if (Len(words)>400) then
response.Write "<script>alert('发送留言的字数不能超过400个字!');history.back();</script>"
response.End()
end if
End if
dim rs_out,rs_in
dim sql_out,sql_in
sql_out="insert into outbox (user_name,to_username,title,words,vip) values('"
sql_out=sql_out&session("user_name")&"','"
sql_out=sql_out&to_user&"','"
sql_out=sql_out&title&"','"
sql_out=sql_out&words&"','"
if session("vip")=True then
vp=1
elseif session("vip")=False then
vp=0
end if
sql_out=sql_out&vp&"')"
cn.execute sql_out

set rs_in=server.CreateObject("adodb.recordset")
rs_in.open "select * from inbox",cn,1,3
rs_in.addnew()
rs_in("user_name")=to_user
rs_in("from_username")=session("user_name")
rs_in("title")=title
rs_in("words")=words
rs_in.update()
response.Redirect("message.asp")

%>

[此贴子已经被作者于2005-11-23 9:10:16编辑过]

搜索更多相关主题的帖子: help 困惑 
2005-11-23 09:03
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
收藏
得分:0 
以下是引用mengya在2005-11-23 9:03:00的发言:

为什么下面这段代码执行时,进行两次入库呢?????????????!!!!



<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="cn.asp"-->
<%
Function killBadWords(str)
badword="妈妈的|你妈的|操|滚|黄片|我靠|fuck|bitch|他妈的|性爱|法轮功|法轮|falundafa|falun|主席|泽民|操你妈|三级片|洪志|锦涛|王八|王八蛋"
If Not(IsNull(badword) or isnull(Str)) Then
'通过split函数,badwords成了程度为16的一维叔祖
badwords = split(badword, "|")
'wordnum保存数组的元素个数
wordnum=UBound(badwords)
For i = 0 to wordnum
str = Replace(str, badwords(i), string(len(badwords(i)),"*"))
Next
killBadWords = str
End If
End Function
dim to_user,title,words
to_user=Trim(Request("to_user"))
title=Trim(Request("title"))
words=Trim(Request("words"))

dim rs_chk
set rs_chk=server.CreateObject("adodb.recordset")
rs_chk.open "select * from user1 where user_name='"&to_user&"'",cn,1,1
if rs_chk.eof then
response.Write "<script>alert('发送失败:收件人不存在');history.back();</script>"
response.End()
end if
dim rs
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from user1 where user_name='"&session("user_name")&"'",cn,1,1
If rs("vip")=False then
words=killBadWords(words )
title=killBadWords(title )
end if
If Not rs.Eof then
If rs("words_enable")=false then
response.Write "<script>alert('您是普通用户,一个月只能发送10条留言!');history.back();</script>"
response.End()
end if
end if
If rs("vip")=False then
if (Len(words)>200) then
response.Write "<script>alert('您是普通用户,发送留言的字数不能超过200个字!');history.back();</script>"
response.End()
end if
Else
if (Len(words)>400) then
response.Write "<script>alert('发送留言的字数不能超过400个字!');history.back();</script>"
response.End()
end if
End if
dim rs_out,rs_in
dim sql_out,sql_in
sql_out="insert into outbox (user_name,to_username,title,words,vip) values('"
sql_out=sql_out&session("user_name")&"','"
sql_out=sql_out&to_user&"','"
sql_out=sql_out&title&"','"
sql_out=sql_out&words&"','"
if session("vip")=True then
vp=1
elseif session("vip")=False then
vp=0
end if
sql_out=sql_out&vp&"')"
cn.execute sql_out

set rs_in=server.CreateObject("adodb.recordset")
rs_in.open "select * from inbox",cn,1,3
rs_in.addnew()
rs_in("user_name")=to_user
rs_in("from_username")=session("user_name")
rs_in("title")=title
rs_in("words")=words
rs_in.update()
response.Redirect("message.asp")

%>

红色文字就是问题所在!~~~

专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2005-11-23 09:09
mengya
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2005-11-8
收藏
得分:0 
Else
if (Len(words)>400) then
response.Write "<script>alert('发送留言的字数不能超过400个字!');history.back();</script>"
response.End()
end if
End if

那么为什么执行前面的判断信息时也执行两次呢,并且弹出两个窗口????

2005-11-23 09:12
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
收藏
得分:0 

你的两次添加记录的程序都没有放在IF...END IF...中啊,所以没有任何作用~~


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2005-11-23 09:15
mengya
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2005-11-8
收藏
得分:0 
麻烦您给改一下好吗???我还是不明白怎么回事??!!

2005-11-23 09:17
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
收藏
得分:0 

yvoqNUG8.rar (1.41 KB)

<!--#include file="cn.asp"-->
<%
Function killBadWords(str)
badword="妈**|你**|操|滚|黄片|我靠|fuck|bitch|他**|性爱|法轮功|法轮|falundafa|falun|主席|泽民|我**|三级片|洪志|锦涛|王八|王八蛋"
If Not(IsNull(badword) or isnull(Str)) Then
'通过split函数,badwords成了程度为16的一维叔祖
badwords = split(badword, "|")
'wordnum保存数组的元素个数
wordnum=UBound(badwords)
For i = 0 to wordnum
str = Replace(str, badwords(i), string(len(badwords(i)),"*"))
Next
killBadWords = str
End If
End Function
dim to_user,title,words
to_user=Trim(Request("to_user"))
title=Trim(Request("title"))
words=Trim(Request("words"))

dim rs
set rs=server.CreateObject("adodb.recordset")
rs.open "select user_name from user1 where user_name='"&to_user&"'",cn,1,1
if rs.eof then
response.Write "<script>alert('发送失败:收件人不存在');history.back();</script>"
response.End()
end if
rs.close
rs.open "select * from user1 where user_name='"&session("user_name")&"'",cn,1,1
If rs("vip")=False then
words=killBadWords(words )
title=killBadWords(title )
end if
If Not rs.Eof then
If rs("words_enable")=false then
response.Write "<script>alert('您是普通用户,一个月只能发送10条留言!');history.back();</script>"
response.End()
end if
end if
If rs("vip")=False
if (Len(words)>200) then
response.Write "<script>alert('您是普通用户,发送留言的字数不能超过200个字!');history.back();</script>"
response.End()
end if
Else
if (Len(words)>400) then
response.Write "<script>alert('发送留言的字数不能超过400个字!');history.back();</script>"
response.End()
end if
End if
rs.close
sql="insert into outbox (user_name,to_username,title,words,vip) values('"
sql=sql&session("user_name")&"','"
sql=sql&to_user&"','"
sql=sql&title&"','"
sql=sql&words&"','"
if session("vip")=True then
vp=1
elseif session("vip")=False then
vp=0
end if
sql=sql&vp&"')"
cn.execute sql
set rs=nothing
cn.close
set cn=nothing
response.Redirect("message.asp")
%>[/QUOTE]


[此贴子已经被作者于2005-11-23 9:32:31编辑过]

2005-11-23 09:29
阳光白雪
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:39
帖 子:2220
专家分:0
注 册:2005-11-18
收藏
得分:0 
以下是引用mengya在2005-11-23 9:03:00的发言:

为什么下面这段代码执行时,该页面的内容都执行两次,运行时弹出两个页面,进行两次入库呢?????????????!!!!



<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="cn.asp"-->
<%
Function killBadWords(str)
badword="妈妈的|你妈的|操|滚|黄片|我靠|fuck|bitch|他妈的|性爱|法轮功|法轮|falundafa|falun|主席|泽民|操你妈|三级片|洪志|锦涛|王八|王八蛋"
If Not(IsNull(badword) or isnull(Str)) Then
'通过split函数,badwords成了程度为16的一维叔祖
badwords = split(badword, "|")
'wordnum保存数组的元素个数
wordnum=UBound(badwords)
For i = 0 to wordnum
str = Replace(str, badwords(i), string(len(badwords(i)),"*"))
Next
killBadWords = str
End If
End Function
dim to_user,title,words
to_user=Trim(Request("to_user"))
title=Trim(Request("title"))
words=Trim(Request("words"))

dim rs_chk
set rs_chk=server.CreateObject("adodb.recordset")
rs_chk.open "select * from user1 where user_name='"&to_user&"'",cn,1,1
if rs_chk.eof then
response.Write "<script>alert('发送失败:收件人不存在');history.back();</script>"
response.End()
end if
dim rs
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from user1 where user_name='"&session("user_name")&"'",cn,1,1
If rs("vip")=False then
words=killBadWords(words )
title=killBadWords(title )
end if
If Not rs.Eof then
If rs("words_enable")=false then
response.Write "<script>alert('您是普通用户,一个月只能发送10条留言!');history.back();</script>"
response.End()
end if
end if
If rs("vip")=False then
if (Len(words)>200) then
response.Write "<script>alert('您是普通用户,发送留言的字数不能超过200个字!');history.back();</script>"
response.End()
end if
Else
if (Len(words)>400) then
response.Write "<script>alert('发送留言的字数不能超过400个字!');history.back();</script>"
response.End()
end if
End if
dim rs_out,rs_in
dim sql_out,sql_in
sql_out="insert into outbox (user_name,to_username,title,words,vip) values('"
sql_out=sql_out&session("user_name")&"','"
sql_out=sql_out&to_user&"','"
sql_out=sql_out&title&"','"
sql_out=sql_out&words&"','"
if session("vip")=True then
vp=1
elseif session("vip")=False then
vp=0
end if
sql_out=sql_out&vp&"')"
cn.execute sql_out

set rs_in=server.CreateObject("adodb.recordset")
rs_in.open "select * from inbox",cn,1,3
rs_in.addnew()
rs_in("user_name")=to_user
rs_in("from_username")=session("user_name")
rs_in("title")=title
rs_in("words")=words
rs_in.update()
response.Redirect("message.asp")

%>


把红色部分删除就可以了~


专注于WEB前端交互平台开发:[url=http://blog./]blog.[/url](富客户端技术(RIA)交流平台)
2005-11-23 09:34
mengya
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2005-11-8
收藏
得分:0 
好的,我行看看吧,谢啦!!!!

2005-11-23 09:36
mengya
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2005-11-8
收藏
得分:0 
  终于搞定啦,多谢赐教!!

2005-11-23 09:43
快速回复:求助:困惑已久的问题,help me !!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049947 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved