พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
ASP programming / การ login
aln
aln
Tue 26 Sep 2006 21:03:22

เรื่องการ login ครับคือผมต้องการแบบว่าถ้าเรามี username และ password อยู่หากเราใช้ username ของเราแล้วป้องกันไม่ให้คนอื่นเข้า username ของเรานี้ในเครื่องอื่นได้ในขณะที่เรากำลังใช้งานอยู่ คือผมอยากให้พี่ดูโค้ดหน่อยครับว่าควรแก้ส่วนใหนบ้าง

****************************************************


<%
bulAction=Request.Form("Login")
Select Case bulAction
Case "Login"   ' <=== Case นี้คือ มีการกด Submit ส่งค่า login เข้ามา
  strUsername=trim(Request.Form("txtUserName"))
  strPassword=trim(Request.Form("txtPassword"))
  If strUsername="" Then     '<=== ไม่ได้ใส่ รายละเอียดในช่อง username
    strErrorUsername="กรุณาระบุช้อมูลรหัสผู้ใช้" 
  Else
    If strPassword="" Then  '<=== ไม่ได้ใส่ รายละเอียดในช่อง password
   strErrorPassword="กรุณาระบุรหัสผ่าน"
 Else
 '==========================
 '   ตรวจสอบทั้งหมด ผ่านฐานข้อมูล
 '==========================
  ' Set Conn=Server.CreateObject("ADODB.Connection")
 '  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("Affairs.mdb")
   '======Open Recordset===================
   SQL="SELECT * FROM tblLoginAdmin WHERE userNameTraffic='"&strUsername&"' "
   Set RS=Conn.Execute(SQL)
 if Session("sUsername")<>RS("userNameTraffic") then
      If RS.EOF Then  '<< === ตรวจสอบเปรียบเทียบ ฐานข้อมูลไม่พบ
     strErrorLoginFaild="ไม่พบข้อมูลเจ้าหน้าที่"
   Else
     If RS("PasswordTraffic")<>strPassword Then '<< === ตรวจสอบรหัสผ่าน
       strErrorLoginFaild="รหัสผ่านไม่ถูกต้อง"
     Else
    Session("sUsername")=RS("userNameTraffic")
       RS.Close
    Conn.Close
         Set RS=Nothing
       Set Conn=Nothing 
      Session("bulLoginFlag")="True"
    Session("adlevel")="1"
    Session("logout")="1"
    Response.Redirect("adminmain.asp")
     End If
      End If
  Else
  %>
                <script language=javascript>
  alert("ชื่อผู้ใช้นี้กำลังเข้าใช้งานระบบอยู่ค่ะ")
  history.back("Adminlogin.asp")
  </script>
  <%
 End If
    RS.Close
    Conn.Close
    Set RS=Nothing
    Set Conn=Nothing 
    End If
  End IF
Case Else   '  <=== Case นี้คือการเปิดมายังหน้า login นี้เป็นครั้งแรก ถ้าต้องการแสดงหรือส่งค่าอะไรก็ระบุไว้
End Select
%>

Administrator
Tue 26 Sep 2006 22:20:59
การทำงานของระบบ Login แบบ Non-duplicate session นั้น เบื้องต้นแล้วมีตารางตามนี้ก็สามารถใช้งานได้แล้วครับ

#users
- username varchar(50)
- password varchar(50)
- isonline (bool)
- sessiontime (datetime)

ตอน login ก็ใช้ SELECT username FROM users WHERE username='username' AND password='password' AND (isonline=false OR sessiontime < NOW-10 minute)

ถ้ามี username, password และยังไม่ถูกเซ็ท isonline หรือ เวลาที่ online นั้นน้อยกว่าเวลาปัจจุบันเป็นเวลา 10 นาที (เพื่อใช้ในกรณีที่ ไม่เกิดการ logout)

ถ้า login ได้คือมีทุกอย่างตาม condition ข้างบนก็ทำการ update isonline = true และ sessiontime เป็นเวลาปัจจุบัน

เมื่อมีการ logout ก็ให้ update isonline=false

สิ่งที่เพิ่มมาคือ ในทุกๆหน้าให้มีการ update sessiontime เป็นเวลาปัจจุบันเสมอ และทำการ update record ที่มี sessiontime < NOW -10 minute ให้ isonline=false

โครงสร้างนี้ใช้ได้กับทุก DBMS และทุกภาษาครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login