Ada dua cara untuk mengimplementasikan fungsi ini:
1. aplikasi
Gunakan objek aplikasi: Jika Anda membangun komunitas besar, Anda mungkin perlu membuat aplikasi untuk setiap ID login. Meskipun desain program akan lebih sederhana, akan ada terlalu banyak pengguna yang login dan akan menghabiskan sumber daya server tidak disarankan di sini karena objek aplikasi Mudah dibuat saat pengguna masuk, tetapi untuk benar-benar melepaskannya sepenuhnya saat pengguna keluar dari sistem, saya belum melihat metode yang lebih baik sejauh ini~
<%
.....Dapatkan nama pengguna nama pengguna.....
ifApplication(nama pengguna)<>lalu
respon.writePengguna sudah login
respon.akhir
endif
Application(username)=username'' menyimpan nama pengguna pengguna
%>
Tambahkan acara sessiononend ke file global, dan Application(isuserlogin)=false saat offline
Selain itu, perlu untuk mendeteksi apakah thread tersebut hang. Ada metode khusus, yaitu item tertentu di objek server.
(Referensi: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2. basis data+asp
Ini mungkin lebih rumit untuk dilakukan, namun cocok untuk sistem dengan sejumlah besar pengguna yang login.
Pertama buat database untuk pengguna - gunakan akses untuk membuat onlyTOL8.mdb baru
Data Tabel 1: pengguna menyimpan informasi pendaftaran pengguna
Tabel data berikut telah disiapkan: uID (nomor otomatis) namapengguna (tipe karakter) userPass (tipe karakter)
Tabel Data 2: onlyLogin menyimpan informasi login sementara pengguna
Tabel data berikut telah disiapkan: OLname (tipe karakter) OLtime (tipe tanggal) OLip (tipe karakter)
Setelah database dibuat, tambahkan data secara manual ke tabel pengguna, tambahkan TOL8 ke tabel userName, dan tambahkan 111 ke tabel userPass.
Selanjutnya, buat antarmuka login pengguna. Salin kode berikut dan simpan ke dalam file onlyLogin.asp.
<html>
<kepala>
<meta http-equiv=Jenis Konten konten=teks/html; charset=gb2312>
<title>Dilarang masuk ke akun yang sama dari wilayah berbeda secara bersamaan</title>
</kepala>
<tubuh>
<nama formulir=metode formulir1=tindakan posting=loginPost.asp>
Nama pengguna: <nama masukan=nama pengguna jenis=teks id=ukuran nama pengguna=15 maxlength=5>
Kata sandi: <nama masukan=tipe userPass=id kata sandi=ukuran userPass=15 maxlength=15>
<tipe input=kirim nama=Kirim nilai=Login>
</bentuk>
</tubuh>
</html>
Setelah selesai, buat file loginCONN.asp baru, salin kode berikut dan simpan untuk terhubung ke database.
<%
Redupkan CONN_TOL8
Redupkan Sambungan_T
Redupkan mmdd
mmdd=hanyaTOL8.mdb
Setel CONN_TOL8 = Server.CreateObject(ADODB.Koneksi)
Conn_T=Penyedia=Microsoft.Jet.OLEDB.4.0;Sumber Data= & Server.MapPath(&mmdd&)
pada kesalahan lanjutkan berikutnya
CONN_TOL8.Buka Sambungan_T %>
Selanjutnya, buat file loginPost.asp yang juga ada di direktori ini. Perhatikan baik-baik kode berikut:
<!--#include file=loginCONN.asp -->
<%
''Hapus pengguna yang aktif dalam waktu maxTime, maxTime telah ditentukan di file loginCONN.asp
Conn_TOL8.Execute(Hapus Dari onlyLogin di mana DATEDIFF(''s'',OLtime, now()) > & maxTime & )
''================ == ==============
Redupkan rs, ts, txt, sql, nama pengguna, userPass
jika Request.Form(Kirim)=Masuk lalu
userName=Request.Form(userName)'' Dapatkan formulir nama login pengguna
userPass=Request.Form(userPass)'' Dapatkan kata sandi login pengguna formulir
''Karena kami tidak membahas masalah keamanan di sini, kata sandi pengguna tidak dienkripsi.
Setel rs = Server.CreateObject(ADODB.RECORDSET)
sql=PILIH * DARI pengguna di mana userName = '' & userName & '' dan userPass = '' & userPass & ''
rs.Buka sql, CONN_TOL8,1,1
JIKA tidak segera
Panggil isOK(userName) '' Jika nama pengguna dan kata sandi benar, isOK akan dikustomisasi dalam program berikut.
kalau tidak
Response.Write(<a href=javascript:history.go(-1)>Nama pengguna atau kata sandi salah</a>)
Respon.Akhir()
berakhir jika
rs.Tutup
Setel rs=Tidak Ada
berakhir jika
Sub isOK(Nama pengguna)
Dim Olip '' IP disimpan oleh nama pengguna login saat ini di database
Dim Oltime '' Terakhir kali halaman web di-refresh ketika nama pengguna login saat ini disimpan dalam database adalah data penting untuk menghitung apakah pengguna sedang online.
Dim OLip1 '' mencatat IP login pengguna saat ini, digunakan untuk membedakan apakah itu pengguna yang sama.
OLip1=Request.ServerVariables(REMOTE_ADDR)''Dapatkan IP pengguna yang mengirimkan informasi login
Setel ts=Conn_TOL8.execute(Pilih * DARI onlyLogin WHERE OLname=''& nama pengguna & '')
jika bukan ts.eof maka '' Kueri database untuk melihat apakah ada informasi login untuk pengguna ini
OLwaktu=ts(OLwaktu)
OLip=ts(OLip)
jika OLip1<>OLip dan DateDiff(s,OLtime,now()) < maxTime lalu
''Kalimat sebelumnya menentukan apakah IP pengguna login yang dikirimkan bukan IP pengguna terakhir yang tercatat dalam database dan
''Jika perbedaan antara waktu aktivitas terakhir pengguna dan waktu saat ini tidak melebihi jumlah detik yang ditentukan, maka pengguna dipastikan sedang online.
Response.Write <a href=javascript:history.go(-1)>Pengguna ini sedang online. Anda tidak dapat masuk ke akun ini dari tempat lain! </a>
Respon.Akhir()
kalau tidak
'' Jika tidak, ditentukan bahwa login berhasil dan nilai dibayarkan ke sesi tersebut.
Sesi(lgName)=Namapengguna
Sesi(lgPass)=userPass
Respon.Redirect loginOK.asp
Respon.Akhir
berakhir jika
kalau tidak
''Jika database tidak memiliki catatan pengguna login, jalankan pernyataan berikut
Redupkan ls
Setel ls=Server.CreateObject(ADODB.RECORDSET)
ls.OpenSelect * Dari onlyLogin,CONN_TOL8,2,2
ls.TAMBAHKAN BARU
ls(NamaOL)=NamaPengguna
ls(OLip)=OLip1
ls(waktu lama)=SEKARANG()
ls.UPDATE
ls.Tutup
Tetapkan ls=Tidak ada
''Tentukan login yang berhasil dan bayar nilai ke sesi
Sesi(lgName)=Namapengguna
Sesi(lgPass)=userPass
Respon.Redirect loginOK.asp
Respon.Akhir
berakhir jika
Akhir Sub %>
Setelah login berhasil, halaman akan melompat ke loginOK.asp
<tipe gaya=teks/css>
<!--
badan {warna latar: #FF9900;}
-->
</gaya>
<% JIKA Sesi(lgName)<> lalu %>
Anda telah berhasil login! ! ! Berikut ini adalah iframe yang diselipkan ke dalam halaman web untuk me-refresh halaman web pada waktu yang ditentukan dan melaporkan ke server apakah Anda sedang online.
Untuk memudahkan pembedaan, kami menggunakan warna putih sebagai warna latar belakang bingkai halaman web.
<iframe border=0 nama=tanggal_baru marginwidth=0 framepacing=0 marginheight=0 src=loginFrame.asp
frameborder=0 noResize lebar=100 gulir=tidak ada tinggi=30 vspale=0></iframe>
<% lain %>
Anda belum masuk
<% berakhir jika %>
Hal berikutnya yang harus dilakukan adalah loginFrame.asp
<!--#include file=loginCONN.ASP -->
<% CONN_TOL8.Execute(Perbarui sajaLogin Set OLtime=''& SEKARANG() & '' di mana OLname = '' & Session(lgName) & '') %>
<html><head><meta http-equiv=segarkan konten=<%=(maxTime-5)%>;
Pada titik ini, program selesai. Kunci dari program ini adalah menentukan apakah pengguna sedang online.