注册 登录
编程论坛 ASP技术论坛

问个用户注册问题!

孤独冷雨 发布于 2010-01-22 14:38, 1282 次点击
用户注册时,如果用户名已经存在,就提醒他这个用户名已经存在了。换一个用户名。现在出现问题了,不管有没有被注册都提示用户名已经被注册。如果数据库里已经有了,就注册不了显示户名已存在。数据库中没有加入新的内容。但是数据库里没有这个用户,它也提醒户名已存在。但能录入数据库,不显示注册成功。好像条件成不成立都执行第一个Response.Write。

uname=request("username")
set rs=server.createobject("ADODB.Recordset")
SQL="select * from userlist where [userid]='"&uname&"'"
rs.open SQL,conn,1,3
if not rs.eof then

    Response.Write"<span style='font-size:12px;' align='center'>用户名:"&uname&"已存在。请选择其他用户名! <a href='javascript:history.go(-1)' class=red>返回</a></font>"
    Response.End()
else

    rs.addnew
        rs("username")=uname
        rs("chkvip")=request("chkvip")
        rs("userid")=uname
        rs("password")=md5(request("password1"))
        rs("tel")=request("tel")
        rs("email")=request("email")
        rs("handset")=request("handset")
        rs("address")=request("address")
        rs("weburl")=request("weburl")
        rs("sign")=request("sign")
        rs("question")=request("question")
        rs("answer")=request("answer")
        rs("tatty")=5
        rs("addtime")=now()
        rs("starttime")=date()
        rs("hide")=1
        rs("endtime")=date()+365
   
    rs.update
    rs.close
    set rs=nothing
Response.Write "注册成功"
end if

[ 本帖最后由 孤独冷雨 于 2010-1-22 14:42 编辑 ]
14 回复
#2
aspic2010-01-22 14:48
我一般
If Rs.Bof Then
    写入数据库
Else
    错误提示
End If
#3
孤独冷雨2010-01-22 14:58
试过了。包括用记录集作判断!每次都执行红色那一段。放在上面下面都不行。

还有就是我把已前用的注册代码复制过来(另外一个网站是可以的),放在这个网站上还是一样,不知道是不是这几天撞见不干净的东西了,净他M撞鬼。
#4
aspic2010-01-22 17:18
做下简单的逻辑测试
SQL="Select id from listuser where userid='"&username&"'"
rs.open SQL,conn,1,1
if not rs.eof then
    response.write "False"
else
    response.write "True"
end if
#5
孤独冷雨2010-01-23 08:50
谢谢你的热心,试了,这个判断是正确的,但我把那段代码一放进去,怎么都执行它。好像if判断对它一点用没有。
做了几年还第一次出现这样情况。另外几个搞.NET和JAVA的也过来看了。也不知道怎么回事!

机子出问题也不太可能啊。另外一台机子上测试也是这种问题。就那么一段代码。也没有错啊!
#6
kgdipbyve2010-01-23 09:31
你把 if not rs.eof then 改成 if not rs.eof and rs.bof then
试试
#7
孤独冷雨2010-01-23 09:43
连if rs.recordcount>0 then这个都试了。都不行,更别说rs.eof rs.bof各样的判断了!
#8
aspic2010-01-24 08:48
其实我以前遇到过这样的
后来好像就是改了下判断的顺序就可以了
也是莫名其妙的问题
#9
TZTJ2010-01-24 21:36
按asp的代码来说应该没问题.我怀疑与你的数据库有关.
#10
chenguoxing5172010-01-25 13:52
估计是你的sql语句有问题
SQL="select * from userlist where [userid]='"&uname&"'"
改为
SQL="select * from userlist where [username]='"&uname&"'"
看下,如果还有问题,直接打印该sql语句,看下sql语句的原型对不?
#11
aspic2010-01-25 15:29
程序代码:
uname=request("username")
set rs=server.createobject("ADODB.Recordset")
SQL="select * from userlist where [userid]='"&uname&"'"
rs.open SQL,conn,1,3
if not rs.eof then

    Response.Write"<span style='font-size:12px;' align='center'>用户名:"&uname&"已存在。请选择其他用户名! <a href='javascript:history.go(-1)' class=red>返回</a></font>"
    Response.End()
else

    rs.addnew
       rs("username")=uname            '楼上好像说得有道理
        rs("chkvip")=request("chkvip")
        rs("userid")=uname
        rs("password")=md5(request("password1"))
        rs("tel")=request("tel")
        rs("email")=request("email")
        rs("handset")=request("handset")
        rs("address")=request("address")
        rs("weburl")=request("weburl")
        rs("sign")=request("sign")
        rs("question")=request("question")
        rs("answer")=request("answer")
        rs("tatty")=5
        rs("addtime")=now()
        rs("starttime")=date()
        rs("hide")=1
        rs("endtime")=date()+365
   
    rs.update
    rs.close
    set rs=nothing
Response.Write "注册成功"
end if
#12
aspic2010-01-25 15:30
不过好像他数据库是故意这样的
rs("username")=uname
rs("userid")=uname
#13
xreins2010-01-25 15:32
弱弱的问下,更你程序编码有关没有,要是是gb2312就换utf8看看
#14
孤独冷雨2010-01-26 08:06
网站和论坛共享用户,所以多做了一个userid字段。它和username存放相同的用户名!
#15
lele20072010-01-26 12:43
呵呵,也遇到过同样的问题。。弄不明白是什么问题。。打印出SQl也是正常接收的内容。。
不知道是否跟类型有关系。。
1