推薦:幾種ASP調用帶參數存儲過程的方式ASP調用帶參數存儲過程的幾種方式1 這也是最簡單的方法,兩個輸入參數,無返回值: set connection = server.createobject(adodb.connection) connection.open someDSN Connection.Execute procname varvalue1, varvalue2 '將所有對象清為nothing,釋放資源
實現這個功能可有兩種方式:
1。 application
用application對象:如果做的是大型社區,可能要為每個登陸id生成一個appliaction,這樣做雖然程序上設計會簡單些但登陸用戶過多及其耗費服務器資源,這裡決不提倡,因為appliaction對像在用戶登陸時生成很容易, 但是要做到真正的隨著用戶退出系統完全釋放,到目前還沒看到更好的方法~
以下為引用的內容: <% .....取用戶名username..... if Application(username)<> then response.write 該用戶已經登錄 response.end end if Application(username)=username ''存入該用戶的用戶名 %> |
在global文件中加上session onend事件,下線時Application(isuserlogin)=false
此外還要檢測是否吊線,有專門的辦法,是server對象裡的某項
(參: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2。數據庫asp
做起來可能會復雜些,但是適合有大量登陸用戶的系統。
首先為用戶建立數據庫-用access新建一個onlyTOL8.mdb
數據表1: users 存放用戶註冊資料
下設數據表:uID(自動編號) userName(字符型) userPass(字符型)
數據表2: onlyLogin 存放用戶臨時登陸信息
下設數據表: OLname(字符型) OLtime(日期型) OLip(字符型)
數據庫建好後直接向users表中手動添加數據userName表添加TOL8,userPass表裡添加111,
下面來做用戶登陸界面,複製下面代碼存成onlyLogin.asp文件。
以下為引用的內容: <html> <head> <meta http-equiv=Content-Type content=text/html; charset=gb2312> <title>禁止同一賬號不同地區同時登陸</title> </head> <body> <form name=form1 method=post action=loginPost.asp> 用戶名:<input name=userName type=text id=userName size=15 maxlength=5> 密碼:<input name=userPass type=password id=userPass size=15 maxlength=15> <input type=submit name=Submit value=Login> </form> </body> </html> |
完成後在新建一個loginCONN.asp文件複製下面的代碼保存用於連接數據庫
以下為引用的內容: <% Dim CONN_TOL8 Dim Conn_T Dim mmdd mmdd=onlyTOL8.mdb Set CONN_TOL8 = Server.CreateObject(ADODB.Connection) Conn_T=Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & Server.MapPath(&mmdd&) on error resume next CONN_TOL8.Open Conn_T %> |
下面做一個loginPost.asp文件也存在這個目錄下,這是關鍵,仔細看下面的代碼:
以下為引用的內容: <!--#include file=loginCONN.asp --> <% ''刪除maxTime時間內部活動的用戶,maxTime 在loginCONN.asp文件裡面已經定義好了 Conn_TOL8.Execute(Delete From onlyLogin where DATEDIFF(''s'',OLtime, now()) > & maxTime & ) ''================================================================ Dim rs, ts, txt, sql, userName, userPass if Request.Form(Submit)=Login then userName=Request.Form(userName)''獲取表單用戶登陸名 userPass=Request.Form(userPass)''獲取表單用戶登陸密碼 ''由於我們這裡討論的不是安全問題所以用戶密碼都沒有加密 Set rs = Server.CreateObject(ADODB.RECORDSET) sql=SELECT * FROM users where userName = '' & userName & '' and userPass = '' & userPass & '' rs.Open sql, CONN_TOL8,1,1 IF not rs.eof then Call isOK(userName) '' 用戶名密碼正確調用次過程,isOK將會在下面的程序中定制。 else Response.Write(<a href=javascript:history.go(-1)>用戶名或密碼錯誤</a>) Response.End() end if rs.Close Set rs=Nothing end if Sub isOK(userName) Dim Olip '' 數據庫中當前登陸用戶名保存的ip Dim Oltime '' 數據庫中當前登陸用戶名保存的最後刷新網頁的時間,是計算用戶是否在線的重要數據。 Dim OLip1 '' 記錄當前用戶登陸ip,用來區分是否為同一用戶的標示 OLip1=Request.ServerVariables(REMOTE_ADDR)''取得提交登陸信息用戶的IP Set ts=Conn_TOL8.execute(Select * FROM onlyLogin WHERE OLname=''& userName & '') if not ts.eof then '' 查詢數據庫是否有此用戶的登陸過的信息 OLtime=ts(OLtime) OLip=ts(OLip) if OLip1<>OLip and DateDiff(s,OLtime,now()) < maxTime then ''上句判斷如果提交登陸用戶ip不是數據庫中最後紀錄的用戶ip並且 ''用戶的最後活動時間和當前時間相隔並沒超過規定的秒數則確認此用戶當前在線 Response.Write <a href=javascript:history.go(-1)>此用戶目前在線,你無法從其他地方登陸此賬號! </a> Response.End() else ''否則的話判定登陸成功付值給session Session(lgName)=userName Session(lgPass)=userPass Response.Redirect loginOK.asp Response.End end if else ''如果數據庫沒有次登陸用戶紀錄則執行下面的語句 Dim ls Set ls=Server.CreateObject(ADODB.RECORDSET) ls.OpenSelect * From onlyLogin,CONN_TOL8,2,2 ls.ADDNEW ls(OLname)=userName ls(OLip)=OLip1 ls(OLtime)=NOW() ls.UPDATE ls.Close Set ls=Nothing ''判定登陸成功付值給session Session(lgName)=userName Session(lgPass)=userPass Response.Redirect loginOK.asp Response.End end if End Sub %> |
登陸成功後葉面會跳轉到loginOK.asp
以下為引用的內容: <style type=text/css> <!-- body {background-color: #FF9900;} --> </style> <% IF Session(lgName)<> then %> 您登陸成功了! ! !下面是潛入網頁內的iframe為的是在規定的時間刷新網頁向服務器報告你是否在線 為了便於區分,frame網頁我們採用了白色作為底色 <iframe border=0 name=new_date marginwidth=0 framespacing=0 marginheight=0 src=loginFrame.asp frameborder=0 noResize width=100 scrolling=no height=30 vspale=0></iframe> <% else %> |
您沒有登陸哈
以下為引用的內容: <% end if %> |
下面要做的是loginFrame.asp
以下為引用的內容: <!--#include file=loginCONN.ASP --> <% CONN_TOL8.Execute(Update onlyLogin Set OLtime=''& NOW() & '' where OLname = '' & Session(lgName) & '') %> <html><head><meta http-equiv=refresh content=<%=(maxTime-5)%>; url=></head></html> |
到此為止程序就完成了,這個程序的關鍵就是判定用戶是否在線。
分享:asp批量錄入數據的實現批量錄入在數據庫的應用中比較廣泛的,關於批量錄入的方法也有好多種。下面我就結合我實際中的應用,談一下兒我是怎麼實現的。主要用到的是form的集合的概念,通過循環取的所有的集合內數據。考慮到大家看著方便,我把它集成到了一個頁面。 下面是具體的代碼