cnitblog.com/lxasp - - 有一种信念叫做编程
|
posts - 61, comments - 34, trackbacks - 0, articles - 0
|
|
Posted on 2008-04-27 21:52 lxasp 阅读(814) 评论(0) 编辑 收藏 引用 所属分类: ASP
第一个版本的后台登录代码:
<!--#INCLUDE FILE="conn.asp"--> <!--#INCLUDE FILE="Core_clsFormBuilder.asp"--> <!--#INCLUDE FILE="Core_clsValidField.asp"--> <!--#INCLUDE FILE="Core_clsASPTemplate.asp"--> <!--#INCLUDE FILE="Core_clsCaller.asp"--> <!--#INCLUDE FILE="md5.asp"--> <% 'LoadPage 'LoadForm
Select Case Request.QueryString("action")
Case "chkadmin" Call CheckForm1ST() Case "checkerr" Call CheckFormERR()
Case "" Call ShowUI() Case Else Call ShowUI() End Select
'显示验证码 'GetCode="<img src=""DV_getcode.asp"" alt= ""验证码,看不清楚?请点击刷新验证码"" style=""cursor:pointer;height:20px;"" onclick=""this.src='DV_getcode.asp'"" />"
'检查验证码是否正确 Public Function CodeIsTrue(CodeStr) If CStr(Session("GetCode"))=CStr(CodeStr) And CodeStr<>"" Then CodeIsTrue=True Session.Contents.Remove("GetCode") Else CodeIsTrue=False Session.Contents.Remove("GetCode") End If End Function
Sub ShowUI()
Dim t,outHTML,f
Set t=LoadPage("Admin_Login")
If Not t Is Nothing Then t("page_title")="领星网站管理系统登录" f=LoadForm("Form_AdminLogin","?action=chkadmin",Null,Null) f=Replace(f,"{=value_Form_AdminLogin_au_name}","") f=Replace(f,"{=value_Form_AdminLogin_au_pwd}","") f=Replace(f,"{=value_Form_AdminLogin_incode}","")
f=Replace(f,"{=Readonly_Form_AdminLogin_au_name}","") f=Replace(f,"{=Readonly_Form_AdminLogin_au_pwd}","") f=Replace(f,"{=Readonly_Form_AdminLogin_incode}","")
t("form_admin_login")=f outHTML=t.GetOutPut
Response.Write outHTML 'AppCa.Remove("TPage_Admin_Login") 'AppCa.Remove("TForm_Form_AdminLogin")
Else Response.Write "加载页面模板出错!!!" End If
End Sub
Sub CheckForm1ST() Dim t,o,errs,fd Dim i,l,sii,lid On Error Resume Next
'Dim fd_au_name : fd_au_name=Trim(Request.Form("au_name")) 'Dim fd_au_pwd : fd_au_pwd=Trim(Request.Form("au_pwd")) 'Dim fd_incode : fd_incode=Trim(Request.Form("incode"))
Set t=New clsValidField
If t.GetValidateFormDataX(o,fd,"Form_AdminLogin") Then Set t=Nothing '验证表单的数据完全正确则: 'fd -- Form Data Execute fd 'Response.Write "<pre>" & fd & "<pre>" errs=False Set t=LoadPage("PageMsgBox") t("page_title")="登录失败" t("def_time")=" " t("def_link")=" " t("msg_title")="错误" t("btn_link")="Admin_Login.asp" t("btn_text")="返回登录页面" t.Add "btn_item"
If Not CodeIsTrue(fd_incode) Then t("msg_text")="你输入的验证码不正确" t.Add "msg_item" errs=True Else fd_au_name=Replace(fd_au_name,"'","''") fd_au_pwd=md5(fd_au_pwd) SQL = "SELECT au_Name,au_Rgt,au_LogCurTime,au_LogCurIP,au_LogLstTime,au_LogLstIP FROM Admin_User WHERE au_name='"&fd_au_name&"' AND au_pwd='"&fd_au_pwd&"'" Set rs=Server.CreateObject("ADODB.Recordset") rs.Open SQL,conn,1,3 '11 for Read '13 for Write sqlcount=sqlcount+1 If rs.EOF And rs.BOF Then t("msg_text")="系统中找不到匹配的用户名或密码" t.Add "msg_item" errs=True Else rs.MoveFirst Session(CookieName&"_au_Name")=rs("au_Name") Session(CookieName&"_au_Rgt")=rs("au_Rgt") rs("au_LogLstIP")=rs("au_LogCurIP") rs("au_LogLstTime")=rs("au_LogCurTime") rs("au_LogCurIP")=Request.ServerVariables("REMOTE_ADDR") rs("au_LogCurTime")=Now() rs.Update End If rs.Close Set rs = Nothing If Err Then t("msg_text")=Err.Description t.Add "msg_item" errs=True End If End If If errs Then '将错误信息传到Session变量中去,用于传递到另外一个页面 Session(CookieName&"_FormValidErr")=t.GetOutPut '为了防止用户刷新,出现错误后立即跳转到显示错误信息的页面 Response.Redirect "?action=checkerr" Else Set t=Nothing Set t=LoadPage("PageMsgBox") t("page_title")="进入管理" t("def_time")=" " t("def_link")=" " t("btn_link")="javascript:window.top.location.replace('Admin_Frameset.asp');" t("btn_text")="进入网站管理" t.Add "btn_item" t("msg_title")="成功" t("msg_text")="<script language=""JavaScript"" type=""text/javascript"">window.top.location.replace('Admin_Frameset.asp');</script>" t.Add "msg_item" Response.Write t.GetOutPut End If Else Set t=Nothing '验证表单的数据出现错误则: '收集错误信息到 errs Set t=LoadPage("PageMsgBox") t("page_title")="登录失败" t("def_time")=" " t("def_link")=" " t("msg_title")="错误" t("btn_link")="Admin_Login.asp" t("btn_text")="返回登录页面" t.Add "btn_item" If IsArray(o) Then l=UBound(o,2) For i=0 To l If o(1,i)=False Then t("msg_text")=""&o(2,i)&":"&o(3,i)&"<br />"&o(4,i)&"" t.Add "msg_item" End If Next End If '将错误信息传到Session变量中去,用于传递到另外一个页面 Session(CookieName&"_FormValidErr")=t.GetOutPut '为了防止用户刷新,出现错误后立即跳转到显示错误信息的页面 Response.Redirect "?action=checkerr" End If End Sub
Sub CheckFormERR() Dim o '当表单的数据有错误时,从Session变量中取出错误提示信息并输出 o=Session(CookieName&"_FormValidErr") '数据已经取出,立即清空释放Session变量的内存资源 Session(CookieName&"_FormValidErr")=Empty If Len(o)=0 Then Response.Write "请勿刷新本页!" Else
Session(CookieName&"_au_Name")=Empty Session(CookieName&"_au_Rgt")=Empty
Response.Write o End If End Sub
%>
第二个版本的后台登录代码:
<!--#INCLUDE FILE="conn.asp"--> <!--#INCLUDE FILE="SYS/Core_clsLxxTPL.asp"--> <!--#INCLUDE FILE="SYS/Core_clsGIListSHTM.asp"--> <!--#INCLUDE FILE="SYS/Core_clsStrConcat.asp"--> <!--#INCLUDE FILE="SYS/Core_ClassCaller.asp"--> <!--#INCLUDE FILE="SYS/Incl_FuLib.asp"--> <!--#INCLUDE FILE="SYS/Appm_clsUserSession.asp"--> <!--#INCLUDE FILE="SYS/Appm_clsLogAction.asp"--> <!--#INCLUDE FILE="SYS/Nome_md5.asp"--> <%
Dim gourl,tpl gourl=Request.QueryString("go")
Dim usr,olog
Set usr=New clsUserSession Set olog=New clsLogAction
usr.IsAdmin=True usr.IsCookie=False
oLog.IsAdmin=True oLog.IsCookie=False
If gourl<>"login" And gourl<>"chklogin" Then If Not usr.Exists Then usr.Clear Response.Redirect "admin.asp?go=login" End If End If
Select Case gourl Case "login" Set tpl=LoadPage("Admin_Login") tpl("formaction")="?go=chklogin" Response.Write tpl.Text Application.Contents.RemoveAll Case "chklogin" usr.Clear usr.Name=Request.Form("ua_name") usr.Password=Request.Form("ua_pwd") usr.ValidCode=Request.Form("incode") usr.Login() If usr.HasErr Then oLog("登录","后台")="用户[" & Request.Form("ua_name") & "]登录后台失败:"&usr.GetErr ErrBoxGo usr.GetErr,"?go=login" usr.ErrClear Else oLog("登录","后台")="用户[" & Request.Form("ua_name") & "]登录后台成功" MsgBox1 "<script type='text/javascript'>window.top.location.replace('?go=frameset');</script>","javascript:window.top.location.replace('?go=frameset');" End If Case "frameset" Set tpl=LoadPage("Admin_Frameset") Response.Write tpl.Text Case "frametop" Set tpl=LoadPage("Admin_FrameTop") tpl("ua_name")=usr.Name tpl("ua_gname")=usr.GroupName Response.Write tpl.Text Case "frameleft" %><!--#INCLUDE FILE="SYS/admin/frameleft.asp"--><%
Case "framemain" %><!--#INCLUDE FILE="SYS/admin/framemain.asp"--><%
Case "logout" oLog("退出","后台")="用户[" & usr.Name & "]退出后台" usr.Clear Response.Redirect "admin.asp?go=login"
Case Else If usr.Exists Then Set tpl=LoadPage("Admin_Frameset") Response.Write tpl.Text End If End Select
Application.Contents.RemoveAll
'Response.Write FormatNumber((Timer-startime)*1000,3)
%>
第二版的用户登录的类:
<% Class clsUserSession Public IsCookie
Private Cookie Private m_name,m_pwd,m_vcode,m_admin,m_timeout Private ErrMsg,bHasErr
Private Sub Class_Initialize() IsCookie=False m_admin="_member" Set Cookie=New clsCookie End Sub Private Sub Class_Terminate() Set Cookie=Nothing End Sub
Private Sub AddErr(s) ErrMsg=ErrMsg&"用户会话出错信息 - "&s&HTML_BR bHasErr=True End Sub Public Function GetErr() GetErr=ErrMsg End Function Public Sub ErrClear() ErrMsg="" bHasErr=False End Sub Public Property Get HasErr() HasErr=bHasErr End Property
Public Property Let Name(s) m_name=Replace(s,"'","''") End Property Public Property Get Name() If IsCookie Then m_name=Cookie(CookieName&m_admin&"_name") Else m_name=Session(CookieName&m_admin&"_name") End If Name=m_name End Property
Public Property Let Password(s) On Error Resume Next m_pwd=md5(s) If Err Then m_pwd=s End Property
Public Property Let ValidCode(s) m_vcode=s End Property
Public Property Get GroupID() Dim r If IsCookie Then r=Cookie(CookieName&m_admin&"_gid") Else r=Session(CookieName&m_admin&"_gid") End If GroupID=r End Property
Public Property Get GroupName() Dim r If IsCookie Then r=Cookie(CookieName&m_admin&"_gname") Else r=Session(CookieName&m_admin&"_gname") End If GroupName=r End Property
Public Property Get UserID() Dim r If IsCookie Then r=Cookie(CookieName&m_admin&"_id") Else r=Session(CookieName&m_admin&"_id") End If UserID=r End Property
Public Property Get UserType() Dim r If IsCookie Then r=Cookie(CookieName&m_admin&"_id") Else r=Session(CookieName&m_admin&"_id") End If UserType=r End Property
Public Sub SetTimeout(s,IsMin) If s=0 Then m_timeout="" Exit Sub End If If IsMin Then m_timeout="DateAdd(""n""," & s & ",Now)" Else m_timeout="DateAdd(""d""," & s & ",Now)" End If End Sub
Public Property Let IsAdmin(s) If s Then m_admin="_admin" Else m_admin="_member" End If End Property Public Property Get IsAdmin() If m_admin="_admin" Then IsAdmin=True Else IsAdmin=False End If End Property
Private Function CodeIsTrue(CodeStr) If CStr(Session("GetCode"))=CStr(CodeStr) And CodeStr<>"" Then CodeIsTrue=True Session.Contents.Remove("GetCode") Else CodeIsTrue=False Session.Contents.Remove("GetCode") End If End Function Public Function Exists() If IsCookie Then Exists=Cookie.Exists(CookieName&m_admin&"_name") Else Exists=(Len(Session(CookieName&m_admin&"_name"))>0) End If End Function
Public Sub Login() Dim rgts,tmp,i '用户开始尝试登录 On Error Resume Next rgts="" If Not CodeIsTrue(m_vcode) Then AddErr "验证编码不正确" Exit Sub End If If IsAdmin Then SQL = "SELECT " & Zua_bid_ & "," & Zua_name_ & "," & Zua_gid_ & "," & Zug_name_ & "," & Zua_type_ & _ "," & Zug_rgtsee_ & "," & Zug_rgtfnd_ & "," & Zug_rgtadd_ & "," & Zug_rgtmod_ & "," & Zug_rgtdel_ & "," & Zug_rgtbuy_ & "," & Zug_rgtdwn_ & "," & Zug_rgtsay_ & "," & Zug_rgtmix_ & _ " FROM " & dbt_UA & "," & dbt_UG & " WHERE " & Zua_gid_ & "=" & Zug_id_ & " AND " & Zua_name_ & "='" & m_name & "' AND " & Zua_pwd_ & "='" & m_pwd & "'" End If
Set rs=Server.CreateObject("ADODB.Recordset") rs.Open SQL,conn,1,1 '11 for Read '13 for Write sqlcount=sqlcount+1 If rs.EOF And rs.BOF Then AddErr "管理员名或密码不正确" Else rs.MoveFirst
For i=0 To 8 If Not IsNull(rs(5+i)) Then tmp=rs(5+i) rgts=rgts&tmp&"|" Next
If IsCookie Then Cookie(CookieName&m_admin&"_id")=rs(0) Cookie(CookieName&m_admin&"_name")=rs(1) Cookie(CookieName&m_admin&"_gid")=rs(2) Cookie(CookieName&m_admin&"_gname")=rs(3) Cookie(CookieName&m_admin&"_type")=rs(4) Cookie(CookieName&m_admin&"_rgts")=rgts If Len(m_timeout)>0 Then Cookie(CookieName&m_admin&"_id").Expires=Eval(m_timeout) Cookie(CookieName&m_admin&"_name").Expires=Eval(m_timeout) Cookie(CookieName&m_admin&"_gid").Expires=Eval(m_timeout) Cookie(CookieName&m_admin&"_gname").Expires=Eval(m_timeout) Cookie(CookieName&m_admin&"_type").Expires=Eval(m_timeout) Cookie(CookieName&m_admin&"_rgts").Expires=Eval(m_timeout) End If Else Session(CookieName&m_admin&"_id")=rs(0) Session(CookieName&m_admin&"_name")=rs(1) Session(CookieName&m_admin&"_gid")=rs(2) Session(CookieName&m_admin&"_gname")=rs(3) Session(CookieName&m_admin&"_type")=rs(4) Session(CookieName&m_admin&"_rgts")=rgts End If
End If rs.Close Set rs = Nothing If Err Then AddErr Err.Description End If End Sub Public Sub Clear() Cookie.Remove(CookieName&m_admin&"_id") Cookie.Remove(CookieName&m_admin&"_name") Cookie.Remove(CookieName&m_admin&"_gid") Cookie.Remove(CookieName&m_admin&"_gname") Cookie.Remove(CookieName&m_admin&"_type") Cookie.Remove(CookieName&m_admin&"_rgts") Session.Contents.Remove(CookieName&m_admin&"_id") Session.Contents.Remove(CookieName&m_admin&"_name") Session.Contents.Remove(CookieName&m_admin&"_gid") Session.Contents.Remove(CookieName&m_admin&"_gname") Session.Contents.Remove(CookieName&m_admin&"_type") Session.Contents.Remove(CookieName&m_admin&"_rgts") End Sub
End Class %>
________________________________________________________________________________________________
再贴一个菜鸟入门的ASP的登录代码(不是我写的):
<%@ Language=VBScript %> <!--#include file="..\inc\conn.asp"--> <% if request.Form("submit")<>"" then if request.Form("userid")="" or request.Form("password")="" then response.Write("<script language=javascript>alert('用户名或者密码不能为空!');history.back();</script>") response.end end if set rs=conn.execute("select * from gly where uid='"&trim(request.form("userid"))&"' and pwd='"&trim(request.form("password"))&"'") if rs.eof then response.Write("<script language=javascript>alert('用户名或者密码验证失败!');history.back();</script>") response.End() else if rs("IsSuper")=1 then session(strSession&"uid")="s" session(strSession&"uidn")=rs("id") else session(strSession&"uid")="n" session(strSession&"uidn")=rs("id") end if response.Redirect("index.asp") response.End() end if rs.close set rs=nothing end if %> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> <!-- body{font-size: 12px;} td{font-size: 12px;} input{font-size: 12px;} select{font-size: 12px;} .style6 {color: #993300; font-weight: bold; font-size: 12px; } .style7 {color: #666666} .style9 {color: #FF0000} .STYLE11 { font-size: 14px; font-weight: bold; } --> </style> <p> </p> <table width="400" height="300" border="0" align="center" cellpadding="0" cellspacing="0" background="images/login.gif"> <tr> <td align="center" valign="middle"><table width="200" border="0" cellspacing="0" cellpadding="0"> <form action="login.asp" name="login" id="login" method="post"> <tr> <td width="60" height="30" align="center"><span class="STYLE11">用户名</span></td> <td align="center"><input name="userid" type="text" id="userid" style="width:120px;"/></td> </tr> <tr> <td width="60" height="30" align="center"><span class="STYLE11">密 码</span></td> <td align="center"><input name="password" type="password" id="password" style="width:120px;" /></td> </tr> <tr> <td height="30" colspan="2" align="center"><label> <input type="submit" name="Submit" value=" 提 交 " /> </label></td> </tr> </form> </table></td> </tr> </table>
|
|