蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年8月25日 8:28

[asp]如何在用户注册时检查已有用户名,防止重复!

做了个判断用户注册防止用户名重复的页面,
  却总是没有成功,不知道错到哪里的,麻烦指点一下啊!
第一个页面:
<!--#include  file="../Connections/conn.asp" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<form name="form1" method="post" action="c.asp">
  <p>用户名:
    <input name="yhm" type="text" id="yhm">
</p>
  <p>
    <input type="submit" name="Submit" value="提交">
</p>
</form>
</body>
</html>
第二个页面:

<!--#include  file="../Connections/conn.asp" -->
<html>
<%
Dim rs
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from yhm where yhm='"&trim(request.form("yhm"))&"'",conn,1,1
if not rs.eof and not rs.bof then
alert("有人已经注册过!")
set rs = nothing
else
rs.close
end if
%>
<%
Dim yh
Set yh = Server.CreateObject("ADODB.Command")
yh.ActiveConnection = MM_conn_STRING
yh.CommandText = "INSERT INTO yhm (yhm)   VALUES ('" + Replace(Request.Form("yhm"), "'", "''") + "') "
yh.CommandTimeout = 0
yh.Prepared = true
yh.Execute()
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
恭喜注册成功!!!
</body>
</html>
在第一个页面提交的时候错误:
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
到底是哪里出错了呢???yhm是传过来了的,数据库里面也是设置的文本。

请教!如何在用户注册时检查已有用户名,防止重复!

既然是用DW做的,直接用里面的服务器行为功能"防止重名"

请教!如何在用户注册时检查已有用户名,防止重复!

可是如果直接用DW里面的服务器行为的话
    form里面的值怎么能传到第二个页面里面去呢??

请教!如何在用户注册时检查已有用户名,防止重复!

倒,这是你自己的思维模式,DW中是在一页中完成的

请教!如何在用户注册时检查已有用户名,防止重复!

不是这个意思,我是想在第一个页面注册后
在第二个页面就把注册信息显示出来,如果用DW自带的行为,在第二页就不能显示出注册信息啊

请教!如何在用户注册时检查已有用户名,防止重复!

我以前回复别人过。。你自己找吧。。。

请教!如何在用户注册时检查已有用户名,防止重复!

http://bbs.blueidea.com/viewthread.php?tid=2334003

请教!如何在用户注册时检查已有用户名,防止重复!

就是找了很久都没有找到。那让我去看看先

请教!如何在用户注册时检查已有用户名,防止重复!

jyhjyh。我照着你的做了,甚至是把你的代码全复制过来。
   我有一个表,表名yhm,两个字段,一个id ,自动编号,一个yhm,文本
只把你的第二个页面该了点代码:
<!--#include file="../Connections/conn.asp" -->
<%
dim username,rs,sql
username=replace(request.form("username"),"'","''")
set rs=server.CreateObject("ADODB.RecordSet")
sql = "Select * from yhm where yhm= '"&username&"'"
'response.write sql
'response.end
rs.open sql,conn,1,3
if not rs.eof then
response.write("<script>alert('错误:用户名已存在,请改名!');history.go(-1)</script>")
else
rs.addnew
rs("yhm")=username
rs.update
response.write("<script>alert('提交成功');history.go(-1)</script>")
rs.close
end if
set rs=nothing
conn.close
set conn=nothing
%>
运行结果仍然是:
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/login/c2.asp, 第 9 行
既rs.open sql,conn,1,3
我要崩溃了

请教!如何在用户注册时检查已有用户名,防止重复!

DW中,所以的东西全在一页完成

请教!如何在用户注册时检查已有用户名,防止重复!

所以啊,我就要想用其他的方式,所以就不能用DW自带的检查用户名重复的行为!
然后就碰到了上面的问题。郁闷

请教!如何在用户注册时检查已有用户名,防止重复!

第二个页面:
Dim rs
在这里加上:
set conn=server.CreateObject("adodb.connection")
conn.open "MM_conn_STRING"

set rs=server.CreateObject("adodb.recordset")
试试

请教!如何在用户注册时检查已有用户名,防止重复!

为什么我加上这两句后
set conn=server.CreateObject("adodb.connection")
conn.open "MM_conn_STRING"
他说我:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
可是我有conn文件连接也是正确的啊!

dpxdpx在上个帖子中说


连数据源也能抄啊?

检查一下输入值,多试试应该没什么问题的..

[code]
<%
dim auser
auser=request("user")
connstart  '连接数据库
Set rs1=Server.CreateObject("ADODB.RecordSet")
sql="select * from user where  name='"&auser&"' order by id desc"
rs1.Open sql,conn,1,1
if rs1.eof and rs1.bof then
rs1.close
set rs1=nothing
set rs=server.createobject("adodb.recordset")
rs.open "user",conn,adopendynamic,3
rs.addnew
rs("name")=request("user")
rs("pwd")=request("pp")
rs.update
response.write"数据己收入数据库中<br>"
Response.End
rs.close
set rs=nothing
else
Response.Write "该用户已经存在,请检查!!"       
response.end
end if
%>
[/code]

我照着你说的做了。加上connstart这句的时候它说数据类型不正确。由于在网页开始有<!--#include file="conn.asp" -->所以我把connstart这句话删除了
运行后,在提交页面文本框里面填入abcd这四个字符。提交,结果是:ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
即这句错误:rs1.Open sql,conn,1,1
然后我把sql整句换到这里面,提示
rs1.Open "select * from user where  name='"&auser&"' order by id desc",conn,1,1
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
我的表设计的是两个字段,一个id自动编号,一个username,文本。
<!--#include file="conn.asp" -->
<%
dim auser
auser=request("username")
Set rs1=Server.CreateObject("ADODB.RecordSet")
rs1.Open "select * from user where  name='"&auser&"' order by id desc",conn,1,1
if rs1.eof and rs1.bof then
rs1.close
set rs1=nothing
set rs=server.createobject("adodb.recordset")
rs.open "user",conn,adopendynamic,3
rs.addnew
rs("username")=request("username")
rs.update
response.write"数据己收入数据库中<br>"
Response.End
rs.close
set rs=nothing
else
Response.Write "该用户已经存在,请检查!!"       
response.end
end if
%>
还是没有搞清楚,为什么总是说我数据类型不正确????


'connstart是我连接数据库的函数,你用自己的就成.
.rs1.Open "select * from user where name='"&auser&"' order by id desc",conn,1,1
你没有name这个字段,你的应该是username字段.
另外我用的是id字段,你的是否是中文名的"编号"
多调调,多试试,总会有结果的.

dpxdpx在上个帖子中说


你的conn文件中的数据源路径有错,建议用绝对路径进行连接。
(或者贴出你的conn文件看看)




Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com