当前位置:编程学习 > asp >>

关于ASP 注册会员需审核登陆的问题

以下为会员登陆页面文件的代码,现在已成功新会员注册时默认向数据表的"shenhe"列提交一个数字0,现在需要在登陆文件中插入检查判断会员是否已经通过审核的代码,"shenhe"为1即可正常登陆,0就弹出提示。但是实在写不出正确的代码,请高手完善,万分感谢。代码如下:

 

<!--#include file="db_conn.asp"-->
<!--#include file="my_lib/char.asp"-->
<!--#include file="my_lib/md5.asp"-->
<%
Call Chkhttp()
dim sql,rs
dim username,password,CheckCode,userid,passid,codeid
userid=checkStr(request.form("login_name"))
passid=checkStr(request.form("login_pass"))
codeid=checkStr(request.form("codeid"))
user=replace(trim(userid),"'","")
pass=replace(trim(passid),"'","")
CheckCode=replace(trim(request.form("codeid")),"'","")
if user="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>用户名不能为空!</li>"
end if
if pass="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>密码不能为空!</li>"
end if
if CheckCode="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>验证码不能为空!</li>"
end if
if session("CheckCode")="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>你登录时间过长,请重新返回登录页面进行登录。</li>"
end if
if CheckCode<>CStr(session("CheckCode")) then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>您输入的确认码和系统产生的不一致,请重新输入。</li>"
end if
if FoundErr<>True then
 pass=md5(pass,32)
 set rs=server.createobject("adodb.recordset")
 sql="select * from user_info_list where txt_login_pass='"&pass&"' and txt_login_name='"&user&"'"
 rs.open sql,conn,1,3
 if rs.bof and rs.eof then
  FoundErr=True
  ErrMsg=ErrMsg & "<br><li>用户名或密码错误!</li>"
 else
     if session("chk_name")=rs("txt_login_name") then
         FoundErr=True
   ErrMsg=ErrMsg & "<br><li>此用户已经登录!</li>"
 else
  if pass<>rs("txt_login_pass") then
   FoundErr=True
   ErrMsg=ErrMsg & "<br><li>用户名或密码错误!</li>"
  else
   rs("lastlogin_time")=now()
   rs("login_nums")=rs("login_nums")+1
   rs("last_login_ip")=Request.ServerVariables("REMOTE_ADDR")
   rs.update
   session("chk_id")=rs("id")
   session("chk_name")=rs("txt_login_name")
   session("log_nums")=rs("login_nums")
   session("chk_flag")=true
   rs.close
   set rs=nothing
   conn.close
   set conn=nothing
   Session("CheckCode")=""
   response.redirect "myaccout.asp"
   end if
   end if
end if
 rs.close
 set rs=nothing
end if
if FoundErr=True then
 call WriteErrMsg()
end if
   conn.close
   set conn=nothing
'****************************************************
'过程名:WriteErrMsg
'作  用:显示错误提示信息
'参  数:无
'****************************************************
sub WriteErrMsg()
 dim strErr
 strErr=strErr & "<html><head><title>错误信息</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" & vbcrlf
 strErr=strErr & "<link href='css/main.css' rel='stylesheet' type='text/css'></head><body>" & vbcrlf
        strErr=strErr &"<div align=center>" & vbcrlf
 strErr=strErr & "<table cellpadding='0' cellspacing='1' bgcolor='#F2F2F5' border=0 width=400> " & vbcrlf
 strErr=strErr & "<tr align='left'><td height='26' align='center' background='images/title-1.jpg'><strong>错误信息</strong></td></tr>" & vbcrlf
 strErr=strErr & "<tr><td height='100' align='left'><b>产生错误的可能原因:</b><br>" & errmsg &"</td></tr>" & vbcrlf
 strErr=strErr & "<tr align='center'><td><a href='login.html'>点击返回登录页面</a></td></tr>" & vbcrlf
 strErr=strErr & "</table>" & vbcrlf
        strErr=strErr & "</div>" & vbcrlf
 strErr=strErr & "</body></html>" & vbcrlf
 response.write strErr
end sub
%>

 

追问:我把if rs("字段")="0" then else end if 写进了判断文件里,但是没有效果,数据库的值是0,确还是可以正常登陆,我将这个判断插入了上面的代码里,却依然可以正常登陆,望高手写出完整的代码,当登陆的用户的shenhe字段值为0时,弹出提示该用户未审核.

答案:修改后的代码如下,你试试:

<!--#include file="db_conn.asp"-->
<!--#include file="my_lib/char.asp"-->
<!--#include file="my_lib/md5.asp"-->
<%
Call Chkhttp()
dim sql,rs
dim username,password,CheckCode,userid,passid,codeid
userid=checkStr(request.form("login_name"))
passid=checkStr(request.form("login_pass"))
codeid=checkStr(request.form("codeid"))
user=replace(trim(userid),"'","")
pass=replace(trim(passid),"'","")
CheckCode=replace(trim(request.form("codeid")),"'","")
if user="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>用户名不能为空!</li>"
end if
if pass="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>密码不能为空!</li>"
end if
if CheckCode="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>验证码不能为空!</li>"
end if
if session("CheckCode")="" then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>你登录时间过长,请重新返回登录页面进行登录。</li>"
end if
if CheckCode<>CStr(session("CheckCode")) then
 FoundErr=True
 ErrMsg=ErrMsg & "<br><li>您输入的确认码和系统产生的不一致,请重新输入。</li>"
end if
if FoundErr<>True then
 pass=md5(pass,32)
 set rs=server.createobject("adodb.recordset")
 sql="select * from user_info_list where txt_login_pass='"&pass&"' and txt_login_name='"&user&"'"
 rs.open sql,conn,1,3
 if rs.bof and rs.eof then
  FoundErr=True
  ErrMsg=ErrMsg & "<br><li>用户名或密码错误!</li>"
 else
     if session("chk_name")=rs("txt_login_name") then
         FoundErr=True
   ErrMsg=ErrMsg & "<br><li>此用户已经登录!</li>"
 else
  if pass<>rs("txt_login_pass") then
   FoundErr=True
   ErrMsg=ErrMsg & "<br><li>用户名或密码错误!</li>"
  else

       if  rs("shenhe")=0 then

response.Write("<script>alert('帐号还未通过审核!');window.location.href=>

else
   rs("lastlogin_time")=now()
   rs("login_nums")=rs("login_nums")+1
   rs("last_login_ip")=Request.ServerVariables("REMOTE_ADDR")
   rs.update
   session("chk_id")=rs("id")
   session("chk_name")=rs("txt_login_name")
   session("log_nums")=rs("login_nums")
   session("chk_flag")=true
   rs.close
   set rs=nothing
   conn.close
   set conn=nothing
   Session("CheckCode")=""
   response.redirect "myaccout.asp"
   end if

end if
   end if
end if
 rs.close
 set rs=nothing
end if
if FoundErr=True then
 call WriteErrMsg()
end if
   conn.close
   set conn=nothing
'****************************************************
'过程名:WriteErrMsg
'作  用:显示错误提示信息
'参  数:无
'****************************************************
sub WriteErrMsg()
 dim strErr
 strErr=strErr & "<html><head><title>错误信息</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" & vbcrlf
 strErr=strErr & "<link href=>        strErr=strErr &"<div align=center>" & vbcrlf
 strErr=strErr & "<table cellpadding='0' cellspacing='1' bgcolor='#F2F2F5' border=0 width=400> " & vbcrlf
 strErr=strErr & "<tr align='left'><td height='26' align='center' background='images/title-1.jpg'><strong>错误信息</strong></td></tr>" & vbcrlf
 strErr=strErr & "<tr><td height='100' align='left'><b>产生错误的可能原因:</b><br>" & errmsg &"</td></tr>" & vbcrlf
 strErr=strErr & "<tr align='center'><td><a href=> strErr=strErr & "</table>" & vbcrlf
        strErr=strErr & "</div>" & vbcrlf
 strErr=strErr & "</body></html>" & vbcrlf
 response.write strErr
end sub
%>

 

弹出 js是alert('aaaaaaaaa')

你写的 WriteErrMsg是在页面上显示错误

判断一下就可以了 if rs("字段")="0" then else end if

上一个:如何用asp实现excel数据导入到sql2000中
下一个:关于ASP传参数中带Html标签问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,