判断用户名是否存在,大家帮我看下,问题出在哪里啊?

pzlk 2003-10-21 11:13:40
if way="tianjia" then
username=request("username2")
userpwd=request("userpwd2")
bbi_name=request("bbi_name2")
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from b_user where username='"&username&"'",conn,1,1
if not rs.bof and rs.eof then
response.write "<p align=center><font color=red>错误,该用户名已经被使用,请重新选择用户名!</font></p>"
rs.close
response.redirect "user.asp?bbi_name="&bbi_name
else
rs.close
sql = " insert into b_user (username,userpwd,bbi_name) values ('"&username&"','"&userpwd&"','"&bbi_name&"')"
conn.Execute(sql)
response.redirect "user.asp?bbi_name="&bbi_name
end if
end if
...全文
66 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyanli 2003-10-21
  • 打赏
  • 举报
回复
楼主,看来你是信不过小女子了……~~~~
if not rs.bof and rs.eof then

运算符优先级:not > and > or
当无记录时,rs.bof ,rs.eof 都为真
当有记录时,都为假.
if not rs.bof and rs.eof 返回的一定是 假。稍微有点逻辑思维能力的人都不会犯这样的错误。
小女子告诉你了啊,答案是:if not (rs.bof and rs.eof) then

(if not 1 and 1) = (if 0 and 1) = if 0
(if not 0 and 0) = (if 1 and 0) = if 0
你自己理解吧,faint了~~~~~~~~~~~~~~~~~~~~~~~~~~
lovehwq21 2003-10-21
  • 打赏
  • 举报
回复
if not rs.bof and rs.eof then
改为
if rs.bof and rs.eof then
如果是指向另一个页,则不用写rs.close,因为麻烦,但是你要写那当然也行,不过要加上
set rs = nothing
airzen 2003-10-21
  • 打赏
  • 举报
回复
没啥意思。
N1rvana 2003-10-21
  • 打赏
  • 举报
回复
if not rs.bof and rs.eof then
改成
if rs.bof or rs.eof then
问题不在这儿,没有错误提示,好像跟没有判断一样

我觉得问题只能是在这里,如果改了还不行,那就不是这段代码的问题,看看表单提交的过程,
在username=request("username2")
userpwd=request("userpwd2")
bbi_name=request("bbi_name2")
后面加两句:
Response.write username
Response.end

看看提交后得到的username是否是已经存在的。

jein 2003-10-21
  • 打赏
  • 举报
回复
function reg_chk()
dim username,password,password2,passwd,email,red
username=trim(request.form("username"))
password=trim(request.form("password"))
password2=trim(request.form("password2"))
passwd=trim(request.form("passwd"))
email=code_form(trim(request.form("email")))
red=""
if symbol_name(username)<>"yes" then
red=red&err_head&"您输入的 <font class=red>用户名称</font> 为空或不符合相关规则!<br>"
else
if health_name(username)<>"yes" then
red=red&err_head&"您输入的 <font class=red>用户名称</font> 含有<font class=red>本系统禁用字符</font>!<br>"
end if
end if
if symbol_ok(password)<>"yes" then
red=red&err_head&"您输入的 <font class=red>登陆密码</font> 为空或不符合相关规则!<br>"
else
if password<>password2 then
red=red&err_head&"您输入的 <font class=red>登陆密码</font> 和 <font class=red>确认密码</font> 不一致!<br>"
end if
end if
if symbol_name(passwd)<>"yes" then
red=red&err_head&"您输入的 <font class=red>密码钥匙</font> 为空或不符合相关规则!<br>"
end if
if email_ok(email)<>"yes" or len(email)>50 then
red=red&err_head&"您输入的 <font class=red>E-mail</font> 为空或不符合邮件规则!<br>"
end if

if red="" then
sql="select * from user_data where username='" & username & "'"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
if rs.eof and rs.bof then
rs.addnew
rs("username")=username
rs("password")=jk_md5(password,"short")
rs("passwd")=jk_md5(passwd,"short")
rs("email")=email
if trim(request.form("sex"))="girl" then
rs("sex")=0
else
rs("sex")=1
end if
rs("face")="0"
rs("tim")=now_time
rs("power")="user"
if web_var_num(web_setup,2,1)=0 then
rs("hidden")=false
else
rs("hidden")=true
end if
rs("bbs_counter")=0
rs("counter")=0
rs("integral")=0
rs("emoney")=0
rs("login_num")=0
rs("last_tim")=now_time
rs("popedom")="00000000000000000000000000000000000000000000000000"
rs.update
rs.close:set rs=nothing

conn.execute("update configs set new_username='"&username&"',num_reg=num_reg+1 where id=1")

if web_var_num(web_setup,2,1)=0 then
reg_chk="<font class=red><b>"&username&"</b></font>,您已成功注册成为本站用户。<br><br>您现在的状态为:<font class=red_3>未审核</font>,请等待管理员的审核。谢谢!"
else
reg_chk="恭喜!<font class=red><b>"&username&"</b></font>,您已成功注册成为本站用户。<br><br><a href='login.asp'>现在进行登陆</a><br><br>请尽快登陆并修改您的个人资料。"
end if
exit function
else
red=err_head&"您输入的 <font class=red>用户名称(<b>"&username&"</b>)</font> 已经被注册!<br>" & _
err_head&"请重新选择输入您的 <font class=red>用户名称</font> 以并继续注册!<br>"
rs.close:set rs=nothing
reg_chk=found_error(red,300):exit function
end if
rs.close:set rs=nothing
else
red=red&err_head&"请查阅有关 <a href='help.asp?action=register' class=red_3>用户注册注意事项</a> 并重新填写。"
reg_chk=found_error(red,280):exit function
end if
end function

sub login_chk()
dim username,password,red,id,power,hidden,face
if symbol_name(login_username)="yes" then
username=login_username
else
username=trim(request.form("username"))
end if
if symbol_ok(login_password)="yes" then
password=login_password
else
password=trim(request.form("password"))
password=jk_md5(password,"short")
end if

red=""
if symbol_name(username)<>"yes" then
red=red&err_head&"您输入的 <font class=red_3>用户名称</font> 为空或不符合相关规则!<br>"
end if
if symbol_ok(password)<>"yes" then
red=red&err_head&"您输入的 <font class=red_3>登陆密码</font> 为空或不符合相关规则!<br>"
end if

if red="" then
sql="select top 1 id,face,power,hidden from user_data where username='"&username&"' and password='"&password&"'"
set rs=conn.execute(sql)
if rs.eof and rs.bof then
red=err_head&"您输入的 <font class=red>用户名称</font> 和 <font class=red>登陆密码</font> 有错误!<br>" & _
err_head&"请重新输入以并继续登陆本站!"
response.write found_error(red,260)
else
power=rs("power"):hidden=rs("hidden")
if hidden=true then
'response.cookies(web_cookies).path=web_path
response.cookies(web_cookies)("login_username")=username
response.cookies(web_cookies)("login_password")=password

sql="update user_data set integral=integral+1,last_tim='"&now_time&"' where username='"&username&"'"
conn.execute(sql)
tit=request.cookies(web_cookies)("guest_name")
if var_null(tit)<>"" then
conn.execute("delete from user_login where l_username='"&tit&"'")
end if

if trim(request.form("memery_info"))="yes" then
response.cookies(web_cookies)("iscookies")="yes"
response.cookies(web_cookies).expires=date+365
end if
'----------------------------------------------------------------------------
if trim(request.form("re_log"))="yes" then
call close_conn()
response.redirect request.servervariables("http_referer")
response.end
end if
'----------------------------------------------------------------------------
response.write "<meta http-equiv='refresh' content='"&web_var(web_num,5)&"; url="&index_url&".asp'><br><br><br>你好,<font class=red>"&username&"</font> 你现在是 <font class=red>"&format_power(power,1)&"</font> 登陆模式<br><br>" & _
vbcrlf & "<a href='"&index_url&".asp'>进入"&tit_fir&"</a> ┋ <a href='login.asp?action=logout'>退出本次登陆</a><br><br><br>"
else
response.write "<font class=red>您的用户帐号还未审核!</font><br><br>请与管理员联系。"
end if
end if
rs.close
else
red=red&err_head&"请查阅有关 <a href='help.asp?action=register' class=red_3>用户注册注意事项</a> 并重新填写。"
response.write found_error(red,280)
end if
end sub

sub login_main()
%>
<script language=javascript src='style/login.js'></script>
<table border=0>
<form name=login_frm method=post action='login.asp?action=login_chk' onsubmit="return login_true()">
<tr><td align=center height=30>用户名称: <input type=text name=username size=15 maxlength=20 tabindex=1>  </td></tr>
<tr><td align=center>登陆密码: <input type=password name=password size=15 maxlength=20 tabindex=2>  </td></tr>
<tr><td align=center height=30 align=center><input type=radio name=memery_info value='no' class=bg_1> 登陆一次 
<input type=radio name=memery_info value='yes' checked class=bg_1> 永久登陆</td></tr>
<tr><td align=center>
<input type=button value='注 册' onClick="document.location='login.asp?action=register'">  
<input type=button value='忘记密码' onClick="document.location='login.asp?action=nopass'">  
<input type=submit value='登 陆' tabindex=3>
</td></tr>
</table>
<%
end sub
%>
jein 2003-10-21
  • 打赏
  • 举报
回复
看看下面这段代码,应该对你有用
<!-- #include file="config.asp" -->
<!-- #include file="skin.asp" -->
<!-- #include file="jk_md5.asp" -->
<%
dim err_head
err_head=img_small("jt0")
index_url="user_main"
tit_fir=format_menu(index_url)

sub nopass()
dim pass_action
pass_action=trim(request.form("pass_action"))
select case pass_action
case "question"
if post_chk()<>"yes" then
call close_conn()
call cookies_type("post")
end if
response.write pass_question()
case "chk"
if post_chk()<>"yes" then
call close_conn()
call cookies_type("post")
end if
response.write pass_chk()
case else
response.write pass_type()
end select
end sub

function pass_question()
dim username
username=trim(request.form("username"))
if symbol_name(username)<>"yes" then
pass_question="您输入的 <font class=red>登陆名称</font> 为空或不符合相关规则!<br><br>"&go_back
exit function
end if
pass_question="<table border=0><form action='login.asp?action=nopass' method=post><input type=hidden name=pass_action value='chk'><tr height=40><td>登陆名称:</td><td><input type=text name=uname size=20 value='"&username&"' readonly class=black_bg></td></tr><tr height=25><td>密码钥匙:</td><td><input type=password name=passwd size=20 maxlength=20></td></tr><tr height=25><td>新的密码:</td><td><input type=password name=password size=20 maxlength=20></td></tr><tr height=25><td>重复密码:</td><td><input type=password name=password2 size=20 maxlength=20></td></tr><tr height=40><td></td><td><input type=submit value='下 一 步'></td></tr><input type=hidden name=username value='"&username&"'></form></table>"
end function

function pass_chk()
dim username,uname,passwd,password,password2
username=trim(request.form("username"))
uname=trim(request.form("uname"))
passwd=trim(request.form("passwd"))
password=trim(request.form("password"))
password2=trim(request.form("password2"))
if symbol_name(username)<>"yes" or username<>uname then
pass_chk="您输入的 <font class=red>登陆名称</font> 为空或不符合相关规则!<br><br>"&go_back
exit function
end if
if symbol_name(passwd)<>"yes" then
pass_chk="您输入的 <font class=red>密码钥匙</font> 为空或不符合相关规则!<br><br>"&go_back
exit function
end if
if symbol_ok(password)<>"yes" then
pass_chk="您输入的 <font class=red>登陆密码</font> 为空或不符合相关规则!<br><br>"&go_back
exit function
else
if password<>password2 then
pass_chk="<font class=red>登陆密码</font> 和 <font class=red>确认密码</font> 不一致!<br><br>"&go_back
exit function
end if
end if
sql="select top 1 password from user_data where username='"&username&"' and passwd='"&jk_md5(passwd,"short")&"' and hidden=1"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
if rs.eof and rs.bof then
rs.close:set rs=nothing
pass_chk="<font class=red>登陆名称</font> 和 <font class=red>密码钥匙</font> 有错或您已被锁定!<br><br>"&go_back
exit function
end if
rs("password")=jk_md5(password,"short")
rs.update
rs.close:set rs=nothing
pass_chk="<font class=blue_1><b>"&username&"</b></font>,<font class=red>您已成功修改了您的密码!</font><br><br>新密码是:<font class=red_3>"&password2&"</font> 请劳记!<br><br><a href='login.asp'>点击进入登陆页面</a>"
end function

function pass_type()
pass_type="<table border=0><form action='login.asp?action=nopass' method=post><input type=hidden name=pass_action value='question'><tr height=40><td>您的登陆名称:</td><td><input type=text name=username size=20 maxlength=20></td></tr><tr height=40><td></td><td><input type=submit value='下 一 步'></td></tr></form></table>"
end function

sub register_main()
dim reg_action,left_i
reg_action=trim(request.form("reg_action"))
select case reg_action
case "reg_main"
left_i=2
case "reg_chk"
left_i=3
case else
left_i=1
end select
%>
<table border=0 width='100%' cellspacing=0 cellpadding=0>
<tr valign=top align=center><td width='23%'>
<br><br><br><img name=reg_left src='images/<%response.write web_var(web_config,5)%>/reg_left_<%=left_i%>.gif' border=0>
</td><td width='77%'>
<table border=0 width='90%' cellspacing=0 cellpadding=0>
<tr><td align=center height=80><img src='images/<%response.write web_var(web_config,5)%>/reg_top.gif' border=0></td></tr>
<tr><td align=center height=300><%
select case reg_action
case "reg_main"
call reg_type()
case "reg_chk"
response.write reg_chk()
case else
call reg_policy()
end select
%><br><br></td></tr>
</table>
</td></tr></table>
<%
end sub

sub reg_policy()
%>

<form name=form_reg action='login.asp?action=register' method=post>
<input type=hidden name=reg_action value='reg_main'>
<tr><td align=center height=50>
<input type=submit value="我已阅读并同意以上条款"> ┋ <input type=button value="不同意" onClick="document.location='index.asp'">
</td></tr>
</form>
</table>
<%
end sub

sub reg_type()
%><br>
<table border=0 width=360 cellspacing=0 cellpadding=2>
<tr><td width='35%'></td><td width='65%'></td></tr>
<form name=reg_frm action='login.asp?action=register' method=post>
<input type=hidden name=reg_action value='reg_chk'>
<tr>
<td align=center>用户名称:</td>
<td><input type=text name=username size=20 maxlength=20><%=redx%></td>
</tr>
<tr>
<td align=center>登陆密码:</td>
<td><input type=password name=password size=20 maxlength=20><%=redx%></td>
</tr>
<tr>
<td align=center>确认密码:</td>
<td><input type=password name=password2 size=20 maxlength=20><%=redx%></td>
</tr>
<tr>
<td align=center>密码钥匙:</td>
<td><input type=text name=passwd size=20 maxlength=20><%=redx%></td>
</tr>
<tr>
<td align=center>E - mail:</td>
<td><input type=text name=email size=30 maxlength=50><%=redx%></td>
</tr>
<tr>
<td align=center>您的性别:</td>
<td> <input type=radio name=sex value='boy' checked class=bg_1> 男孩   <input type=radio name=sex value='girl' class=bg_1> 女孩 <%response.write redx%></td>
</tr>
<tr><td></td><td height=50><input type=submit value=' 现 在 注 册 '></td></tr>
</form>
<tr><td colspan=2 height=30><hr size=1 color=#c0c0c0 width='90%'></td></tr>
<tr><td colspan=2>
<p style='line-height: 150%'><font class=red_2>用户注册注意事项:</font><br>
   1、用户名称注册申请成功之后将不能更改。<br>
   2、用户名称可以是大小写英文字母(a~z、A~Z)、阿拉伯数字(0~9)、
连接字符“-”、下划线“_”和汉字组成;首字符不能为连接字符“-”或下划线“_”,长度不能超过20位。例:joe_527<br>
   3、登陆密码只能由大小写英文字母(a~z、A~Z)、阿拉伯数字(0~9)、
连接字符“-”和下划线“_”组成。例:dw7v9j<br>
   4、以上填写的注册信息的内空均不区分大小写。</p>
</td></tr>
</table>
<%
end sub

pzlk 2003-10-21
  • 打赏
  • 举报
回复
jein(幽灵):
你好,我是只对用户名做了判断啊,但我输入同样的用户名的时候,没有任何提示:(
jein 2003-10-21
  • 打赏
  • 举报
回复
我建议你呢,你在一开始就写一个判断程序,只对 username 判断,其他的东西先不做判断,
if way="tianjia" then
username=request("username2")
userpwd=request("userpwd2")
bbi_name=request("bbi_name2")
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from b_user where username='"&username&"'",conn,1,1
if not rs.bof and rs.eof then。。。
上面就是你的判断程序 ,不要对 userpsw 进行判断,只要对username 判断就可以了,因为下面的程序可能会带来一些问题,另外你这个程序有没有包含其他的程序呢,再看一下其他的程序有没有问题,这个程序我以前做过的,不难啊。
pzlk 2003-10-21
  • 打赏
  • 举报
回复
if not rs.bof and rs.eof then
改成
if rs.bof or rs.eof then
问题不在这儿,没有错误提示,好像跟没有判断一样
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from b_user where username='"&username&"'",conn,1,1
if not rs.bof and rs.eof then
response.write "<p align=center><font color=red>错误,该用户名已经被使用,请重新选择用户名!</font></p>"
rs.close
response.redirect "user.asp?bbi_name="&bbi_name

N1rvana 2003-10-21
  • 打赏
  • 举报
回复
if not rs.bof and rs.eof then

改成
if rs.bof or rs.eof then
yangyanli 2003-10-21
  • 打赏
  • 举报
回复
if not (rs.bof and rs.eof) then

你的错误是什么啊?有没有错误提示啊?
pzlk 2003-10-21
  • 打赏
  • 举报
回复
yangyanli(叶子)(cmsoft是偶师傅),N1rvana(焦油坑中的兽神):
谢谢师傅&兽神,也感谢其他热心的朋友!
N1rvana 2003-10-21
  • 打赏
  • 举报
回复
不好意思……前面一直看错了……应该是这个:

if not rs.bof and not rs.eof then

not rs.bof and not rs.eof 判断记录存在的条件表达式

或者只是 if not rs.bof then
也可以……不好意思,不好意思。

28,391

社区成员

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

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