为什么表单提交的记录,写入数据库后重复了?

flashyy 2007-11-26 02:32:23
<!--#include file=conn.asp-->
<%
'去除表单数据中的空格
UserName = Trim (Request.Form("tn"))
UserPass = Trim (Request.Form("passw"))

'用户名、密码、验证码都必须填写
If (UserName="" Or UserPass="") Then
Response.Redirect "contest.asp?errMsg=请完整填写登陆表格"
Response.End()
End If

Dim strSQL, objRS

'检索数据库中是否存在相关记录
strSQL = "SELECT * FROM member WHERE teamname='" & UserName & "'"
strSQL = strSQL & " AND passwd = '" & UserPass & "'"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 1, 3, 1

'检索结果为空,表明用户名或者密码错误
If objRS.EOF Then
Response.Redirect "contest.asp?errMsg=用户名或密码错误"
Response.End()
End If

Dim rs
Set rs = Server.CreateObject("ADODB.RecordSet")
'定义sql语句,为插入新闻记录定义记录集
sql="SELECT * FROM teamanswer"
'执行查询
rs.Open sql,objConn, 1, 3

'使用AddNew和Update插入新记录
rs.AddNew
rs("teamname") =UserName
rs("qnum") =Request.Form("qn")
rs("language") =Request.Form("lang")
dim msg
msg=request.Form("ans")
msg=replace(msg,"<"," ")
msg=replace(msg,">"," ")
msg=replace(msg,vbcrlf,"<br>")
msg=replace(msg," "," ")
rs("answer") =msg

'提交更新
rs.Update

'关闭记录集和数据库连接
objRS.Close
rs.Close
Set objRS = Nothing
Set rs=nothing
objConn.Close
Set objConn = Nothing

'转向系统主页面
Response.Redirect "processed.asp"
Response.End()
%>
...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
toury 2007-11-29
  • 打赏
  • 举报
回复
"可是这样的true和false没啥意义,并且未填密码和用户名时,仍旧提交网页"
------------->呵呵,你仔细看看你的function SubmitForm() 函数,刚好写反了吧:))
toury 2007-11-27
  • 打赏
  • 举报
回复
代码没贴全;
<input type="submit" name="Submit" value="提交" tabindex="6" width="40" height="20" onClick="SubmitForm()"/>中的SubmitForm()部分呢?
如果其中有document.form1.submit()这样的句子,要去掉
flashyy 2007-11-27
  • 打赏
  • 举报
回复
toury, 谢谢你,去掉form1.submit()就可以了。但是问题是
<script language="javascript">
//表单数据检查函数
function CheckData()
{
var errMsg= "";
//用户名、密码、验证都不能为空
if(form1.tn.value=="")
errMsg= "请输入小组名"
else if(form1.passw.value == "")
errMsg="请输入密码"
else if(form1.qn.value=="")
errMsg="请输入题号"
else if(form1.ans.value=="")
errMsg="请输入程序代码"
if(errMsg == "")
return true;
else
{
//提示错误信息
window.alert(errMsg);
return false;
}
}
function SubmitForm()
{
//在提交表单时检验数据有效性
if(CheckData())
return true;
else return false;
}
</script>
可是这样的true和false没啥意义,并且未填密码和用户名时,仍旧提交网页。
flashyy 2007-11-26
  • 打赏
  • 举报
回复
我测试了好多次,都是每次提交,有2条重复记录。
flashyy 2007-11-26
  • 打赏
  • 举报
回复
<form name="form1" method="post" action="checkpwd.asp">
<tr>
<td width="40" height="40" valign="middle"> </td>

<td width="640" height="40" valign="middle"><span class="STYLE1">小组名:</span>
<label align="left">
<input name="tn" type="text" id="tn" tabindex="1" size="20" maxlength="18" value="
<%
'检查Cookies,如果存在帐号信息,则填写文本框
If (Request.Cookies("Name") <> Empty) Then
Response.Write(Request.Cookies("Name"))
Else
Response.Write("")
End If
%>"/>
</label></td>
<td width="42" height="40" valign="middle"> </td>
</tr>
<tr>
<td height="40" valign="middle"> </td>
<td height="40" valign="middle"><span class="STYLE1">密  码:</span>
<label>
<input name="passw" type="password" id="passw" tabindex="2" size="20" maxlength="18" value="
<%
'检查Cookies,如果存在密码信息,则填写文本框
If (Request.Cookies("pwd") <> Empty ) Then
Response.Write(Request.Cookies("pwd"))
Else
Response.Write("")
End If
%>" />
</label></td>
<td height="40" valign="middle"> </td>
</tr>
<tr>
<td height="40" valign="middle"> </td>
<td height="40" valign="middle"><span class="STYLE1">题  号:</span>
<label>
<input name="qn" type="text" id="qn" tabindex="3" size="20" maxlength="18" />
</label></td>
<td height="40" valign="middle"> </td>
</tr>
<tr>
<td height="40" valign="middle"> </td>
<td height="40" valign="middle"><span class="STYLE1">语  言:</span>
<label>
<select name="lang" size="1" id="lang" tabindex="4">
<option value="-1" selected="selected"></option>
<option value="c">C</option>
<option value="c++">C++</option>
<option value="java">Java</option>
</select>
</label></td>
<td height="40" valign="middle"> </td>
</tr>
<tr>
<td height="40" valign="middle"> </td>
<td height="40" valign="middle"><p class="STYLE1">源代码:</p> </td>
<td height="40" valign="middle"> </td>
</tr>
<tr>
<td height="30"> </td>
<td height="100%" align="center"><label>
<textarea name="ans" cols="70" rows="20" id="ans" tabindex="5"></textarea>
</label></td>
<td height="30"> </td>
</tr>
<tr>
<td height="30"> </td>
<td height="100%" align="center"><label>
<input type="submit" name="Submit" value="提交" tabindex="6" width="40" height="20" onClick="SubmitForm()"/>
        
<input type="reset" name="Submit2" value="重置" tabindex="7" />
</label></td>
</form>
北京不不 2007-11-26
  • 打赏
  • 举报
回复
在此页面用javascript alert("该死")
bcc1o 2007-11-26
  • 打赏
  • 举报
回复
如果是普通的点击 每次也有2个记录 那么就是代码问题 写入重复了

如果是快速点击 网络原因 在submit加disabled
littlelam 2007-11-26
  • 打赏
  • 举报
回复
把表单的那个页面贴出来

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧