מדריך ASP – עבודה מול DB – חלק ג'
Login
בשלב הראשון המשתמש מגיע לדף הכניסה enter.asp, ומתבקש להכניס שם וסיסמא. אם הוא עדיין אינו רשום במערכת,
הוא ילחץ על לינק המפנה לדף subscribe.asp, שם יבצע את ההרשמה. אם יש ברשותו סיסמא, הוא יקליד אותה,
הסיסמא ושם המשתמש ייבדקו מול בסיס הנתונים, ואם הם קיימים, הכניסה תאושר.
הטבלה נראית כך:
הקובץ enter.asp
<% If Request("Login")<>"" And Request("Password")<>"" Then Dim conn, rs, SQLstr, okForProccess Set conn = Server.CreateObject("ADODB.Connection") 'connection object Set rs = Server.CreateObject("ADODB.Recordset") 'recordset object conn.Open "myDSN" 'oppening the connection SQLstr="SELECT ID,Password FROM SiteUsers " SQLstr= SQLstr & "WHERE Login='" & Request("Login") & "'" ' SQL query rs.Open SQLstr,conn 'oppening the recordset If Rs.EOF Then 'if there are no corresponding records okForProccess=false 'Invalid login Else If Request("Password")<>rs("Password") Then okForProccess=false 'Invalid password Else okForProccess=true 'valid password Session("ID") = rs("ID") End If End If rs.Close conn.Close Set rs = Nothing Set conn = Nothing If okForProccess Then ' both login and password are valid Response.Redirect "securedPage.asp" Else Response.Write "<center><FONT COLOR='red'>" 'displaying error message Response.Write "Invalid login or password</FONT></center>" End If End If %> <html> <head> <title>enter.asp</title> </head> <body> <form method=post action="enter.asp"> <table width="50%" align="center"> <tr> <td>login:</td> <td><input type="text" name="login"></td> </tr> <tr> <td>password:</td> <td><input type="text" name="password"></td> </tr> <tr> <td colspan=2><input type="submit"></td> </tr> </table> </form> <table width="50%" align="center"> <tr> <td><a href="subscribe.asp"> if you are still not registred, press here</a></td> </tr> </table> </body> </html>
<%@ Language=JScript%> <% if((Request("Login")() && Request("Password")()){ var conn = Server.CreateObject("ADODB.Connection") //connection object , rs = Server.CreateObject("ADODB.Recordset") //recordset object , SQLstr, okForProccess conn.Open ("myDSN" ) //oppening the connection SQLstr="SELECT ID,Password FROM SiteUsers " SQLstr+= "WHERE Login='" + Request("Login")() + "'" // SQL query rs.Open (SQLstr,conn) //oppening the recordset if(rs.EOF ){ //if(there are no corresponding records okForProccess=false //Invalid login }else{ if(Request("Password")()!=rs("Password").value){ okForProccess=false //Invalid password }else{ okForProccess=true //valid password Session("ID") = rs("ID").value } } rs.Close // closing objects delete rs; rs = null; conn.Close delete conn; conn = null; if(okForProccess ){ // both login and password are valid Response.Redirect "securedPage.asp" }else{ Response.Write ("<center><FONT COLOR='red'>") //displaying error message Response.Write ("Invalid login or password</FONT></center>") } } %> <html> <head> <title>enter.asp</title></head> <body> <form method=post action="enter.asp"> <table width="50%" align="center"> <tr> <td>login:</td> <td><input type="text" name="login"></td> </tr> <tr> <td>password:</td> <td><input type="text" name="password"></td> </tr> <tr> <td colspan=2><input type="submit"></td> </tr> </table> </form> <a href="subscribe.asp"> if you are still not registred, press here </a> </body> </html>
במקרה ומצאנו כי שם המשתמש והסיסמא קיימים במערכת, אנו מכניסים את מספר ה-ID של המשתמש למשתנה Session, כדי לוודא בדפים הבאים שלמשתמש אכן יש אישור לצפות בהם. כך נמנע מצב שמשתמש שמקליד בשורת הכתובת של הדפדפן את כתובתו של אחד הדפים אשר איננו רוצים שמשתמשים לא-רשומים יראו, יראה בכל זאת את הדף.
בראשו של כל דף "מאובטח" נכתוב:
<% If Session("ID")="" Then Response.Redirect "enter.asp" End If %>
<% if (!Session("ID")){ Response.Redirect ("enter.asp") Response.End() } %>
כך נוודא שכל משתמש המנסה לראות דף מאובטח הגיע אלינו באמצעות הכנסת שם וסיסמא.אם לא – אנו
שולחים אותו לדף המבקש שם וסיסמא. (יש לציין שאותו דבר ניתן לעשות גם באמצעות עוגיות).
הקובץ subscribe.asp
<% If Request("Login")<>"" And Request("Password")<>"" Then 'only login & password are required Dim conn, SQLstr Set conn = Server.CreateObject("ADODB.Connection") conn.Open "myDSN" SQLstr="INSERT INTO SiteUsers (Login,Password,Fname,Lname,Email)" SQLstr= SQLstr & " VALUES ('" & Request("Login") & "','" SQLstr= SQLstr & Request("Password") & "','" SQLstr= SQLstr & Request("Fname") & "','" SQLstr= SQLstr & Request("Lname") & "','" SQLstr= SQLstr & Request("Email") & "')" conn.Execute SQLstr conn.Close Set conn = Nothing Response.Redirect "enter.asp" End If %> <html> <head> <title>subscribe.asp</title> </head> <body> <form method=post action="subscribe.asp"> <table width="50%" align="center"> <tr> <td>login:</td> <td><input type="text" name="login"></td> </tr> <tr> <td>password:</td> <td><input type="text" name="password"></td> </tr> <tr> <td>first name:</td> <td><input type="text" name="fname"></td> </tr> <tr> <td>last name:</td> <td><input type="text" name="lname"></td> </tr> <tr> <td>email:</td> <td><input type="text" name="email"></td> </tr> <tr> <td colspan=2><input type="submit"></td> </tr> </table> </form> </body> </html>
<%@ Language=JScript%> <% if (Request("Login" ++ Request("Password")){ //only login + password are required var conn = Server.CreateObject("ADODB.Connection") , SQLstr conn.Open ("myDSN") SQLstr="INSERT INTO SiteUsers (Login,Password,Fname,Lname,Email)" SQLstr+= " VALUES ('" + Request("Login")() + "','" SQLstr+= Request("Password")() + "','" SQLstr+= Request("Fname")() + "','" SQLstr+= Request("Lname")() + "','" SQLstr+= Request("Email")() + "')" conn.Execute (SQLstr) conn.Close delete conn; conn = null; Response.Redirect ("enter.asp") } %> <html> <head> <title>subscribe.asp</title> </head> <body> <form method=post action="subscribe.asp"> <table width="50%" align="center"> <tr> <td>login:</td> <td><input type="text" name="login"></td> </tr> <tr> <td>password:</td> <td><input type="text" name="password"></td> </tr> <tr> <td>first name:</td> <td><input type="text" name="fname"></td> </tr> <tr> <td>last name:</td> <td><input type="text" name="lname"></td> </tr> <tr> <td>email:</td> <td><input type="text" name="email"></td> </tr> <tr> <td colspan=2><input type="submit"></td> </tr> </table> </form> </body> </html>
לאחר שהמשתמש נרשם, אנו שומרים את פרטיו בבסיס הנתונים, ומעבירים אותו, באמצעות Response.Redirect לדף המאובטח.
בפעם הבאה שהוא יגיע לאתר, הוא כבר לא יצטרך להרשם שוב, אלא רק להכניס את שם המשתמש והסיסמא שלו.
תגובות בפייסבוק