Pertama-tama, .asa adalah akhiran file, yang merupakan singkatan dari Aplikasi Server Aktif. File Global.asa dapat mengelola dua objek yang sangat menuntut dalam aplikasi ASP: Aplikasi dan Sesi.
Ini sebenarnya adalah file opsional di mana penulis program dapat menentukan skrip acara dan mendeklarasikan objek dengan cakupan sesi dan aplikasi. Isi file ini tidak digunakan untuk ditampilkan kepada pengguna, tetapi digunakan untuk menyimpan informasi peristiwa dan objek yang digunakan secara global oleh aplikasi. File ini harus ditempatkan di direktori root aplikasi. Hanya ada satu file Global.asa per aplikasi.
Kesalahpahaman paling umum tentang file Global.asa adalah bahwa file tersebut dapat digunakan sebagai perpustakaan untuk fungsi dan subrutin yang umum digunakan. File Global.asa hanya dapat digunakan untuk membuat referensi objek dan menangkap permulaan, serta mengakhiri objek Aplikasi dan objek Sesi.
File Global.asa sebagian besar diakses berdasarkan peristiwa tingkat sesi dan dipanggil dalam tiga situasi berikut:
1. Ketika peristiwa Application_OnStart atau Application_OnEnd dipicu.
2. Saat peristiwa Session_OnStart atau Session_OnEnd dipicu.
3. Saat mereferensikan suatu objek (Object) yang dipakai dalam file Global.asa.
Format file standar Global.asa adalah sebagai berikut:
<BAHASA SKRIP=VBScript RUNAT=Server>
Sub Aplikasi_OnStart
'Application_OnStart Berjalan ketika pelanggan pertama kali mengunjungi halaman beranda aplikasi
Akhiri Sub
SubSesi_DiMulai
'Session_OnStart berjalan ketika klien pertama kali menjalankan halaman mana pun di aplikasi ASP
Akhiri Sub
SubSesi_Di Akhir
'Session_OnEnd Berjalan ketika sesi klien habis atau keluar dari aplikasi
Akhiri Sub
Sub Aplikasi_Di Akhir
'Application_OnEnd berjalan ketika server WEB situs dimatikan
Akhiri Sub
</SKRIP>
1. Sesi_onStart
Pertama mari kita lihat kode yang mengontrol pengguna untuk memasuki halaman:
1. Global.asa (ditempatkan di bawah direktori root dari direktori virtual yang sedang di-debug)
<BAHASA SKRIP=VBScript RUNAT=Server>
Sub Session_OnStart 'Selama pengguna masuk ke situs ini untuk pertama kalinya, dia akan melompat ke beranda
respon.redirect(http://www.vevb.com)
Akhiri Sub
</SKRIP>
Kemudian debug file apa pun di direktori virtual saat ini, Anda akan menemukan bahwa semua halaman melompat ke http://www.vevb.com/<
Melalui contoh pemaksaan masuk ke halaman tertentu ini, bisa dibayangkan hal itu sangat diperlukan ketika halaman beranda membutuhkan perhatian.
Mari kita lanjutkan mengamati kejadian Session_OnStart dan Session_OnEnd menggunakan contoh jumlah orang yang online.
2. Sesi_di Akhir
2. Global.asa (ditempatkan di bawah direktori root dari direktori virtual yang sedang di-debug)
<BAHASA SKRIP=VBScript RUNAT=Server>
Sub Application_onStart 'Nilai awal adalah 0
Aplikasi(OnLine) = 0
Akhiri Sub
Sub Session_onStart 'Seorang pengguna mengakses hitungan dan menambahkan 1
Aplikasi.Kunci
Aplikasi(OnLine) = Aplikasi(OnLine) + 1
Aplikasi. Buka kunci
Akhiri Sub
Sub Session_OnEnd 'Akhir dari proses pengguna, hitungannya dikurangi 1 (PS jika tidak ada program acara seperti itu, program akses halaman akan dijalankan.)
Aplikasi.Kunci
Aplikasi(OnLine) = Aplikasi(OnLine) - 1
Aplikasi. Buka kunci
Akhiri Sub
</SKRIP>
3.online.asp
<%
jika request.querystring(logout)=true maka
sesi.Abaikan()
respon.akhir
berakhir jika
%>
Saat ini ada <%=Aplikasi(OnLine)%> online
<a href=online.asp?logout=true>Keluar</a>
Anda menemukan bahwa hanya ada satu Aplikasi (OnLine) di halaman ini, dan masih dirujuk secara eksplisit. Jadi dari mana nilainya berasal? Ini adalah kunci file Global.asa. Anda dapat membuka jendela secara berurutan di mesin ini dan melakukan debug dengan dua cara: menutup jendela atau keluar.
3. Lanjutkan menyempurnakan
Dalam program di atas, Anda akan menemukan bahwa efek menutup jendela setelah keluar dari koneksi berbeda dengan menutup jendela secara langsung. Karena Sesi sudah ada sejak lama, peristiwa Session_OnEnd tidak dapat dipicu ketika jendela ditutup secara langsung, jadi bagaimana mewujudkan ide yang hampir mustahil ini?
Seperti yang kita ketahui bersama, ketika halaman web ditutup, hal itu dapat dikaitkan dengan peristiwa onunload. Jadi selama onunload dapat menjalankan fungsi logout sesi tersebut, bukankah itu yang kita perlukan? Tanpa basa-basi lagi, mari kita modifikasi online.asp
3.online.asp
<%
jika request.querystring(logout)=true maka
sesi.Abaikan()
respon.akhir
berakhir jika
%>
<body onunload=javascript:window.open(exit.asp)>
Saat ini ada <%=Aplikasi(OnLine)%> online
<a href=online.asp?logout=true>Keluar</a>
Perhatikan bahwa ketika online.asp melakukan onunload, exit.asp akan dibuka. Kemudian setel session.Abandon() di exit.asp dan semuanya akan baik-baik saja.
4.keluar.asp
<%sesi.Abaikan()%>
<skrip>
mandiri.tutup()
</skrip>
Tentu saja, Script ditambahkan untuk menutup Sesi segera setelah logout. Sekarang pada dasarnya aplikasi web untuk statistik online saja sudah cukup.
4. Kajian mendalam tentang Global.asa
Dari debugging di atas, jika Anda menarik kesimpulan dari satu contoh, Anda pasti akan bertanya: Bagaimana cara mengontrol jumlah pengguna terdaftar secara online? Kemudian lihat file berikut satu per satu:
5. Global.asa (ditempatkan di bawah direktori root dari direktori virtual yang sedang di-debug)
<BAHASA SKRIP=VBScript RUNAT=Server>
Sub Aplikasi_OnStart
aplikasi(online)=0
Akhiri Sub
SubSesi_DiMulai
Akhiri Sub
SubSesi_Di Akhir
if session.contents(pass) lalu 'Tentukan apakah itu Session_OnEnd dari pengguna yang masuk
aplikasi.lock
aplikasi(online)=aplikasi(online)-1
aplikasi.buka kunci
berakhir jika
Akhiri Sub
Sub Aplikasi_Di Akhir
Akhiri Sub
</SKRIP>
Perhatikan bahwa blok Session_OnStart di Global.asa ini tidak melakukan peristiwa apa pun.
Karena begitu pengguna mengakses server, terlepas dari apakah pengguna tersebut login, event OnStart akan dihasilkan, dan yang diperlukan sekarang adalah pengguna yang login sedang online, sehingga Aplikasi (online) tidak dapat ditingkatkan sebesar 1 in acara OnStart.
Dan karena event OnEnd akan dihasilkan terlepas dari apakah sesi pengguna yang login berakhir (jika pengunjung mengunjungi server tetapi tidak login, event OnEnd juga akan dihasilkan setelah sesinya berakhir), maka pernyataan if digunakan dalam acara Session_OnEnd untuk menilai apakah itu acara OnEnd dari pengguna yang masuk, jika demikian, jumlah orang yang online akan berkurang 1.
Dan perlu diperhatikan: penggunaan session.contents(pass), karena penggunaan objek Session dilarang di event OnEnd, namun variabel sesi dapat dipanggil menggunakan kumpulan objek Session. Dengan kata lain, session(pass) tidak dapat ditulis secara langsung, tetapi session.contents(pass) perlu ditulis.
6. login.asp
<%
jika request.querystring(logout)=true maka
sesi.Abaikan()
berakhir jika
kirimnama=permintaan.formulir(kirim)
jika submitname=kirim maka
nama=permintaan.formulir(nama)
pwd=permintaan.formulir(pwd)
jika nama=cnbruce dan pwd=cnrose maka
sesi(nama)=nama
sesi(lulus)=benar
kalau tidak
respon.tulis Nama Kesalahan Atau Sandi.<a href='login.asp'>Kembali</a>
respon.akhir
berakhir jika
aplikasi.lock
lamaran(online)= lamaran(online)+1
aplikasi.buka kunci
%>
Saat ini ada <%=application(online)%> anggota terdaftar.
<a href=login.asp?logout=true>Keluar</a>
<%lainnya%>
<formulir tindakan=login.asp metode=posting>
<tipe masukan=nama teks=nama><br>
<tipe masukan=nama kata sandi=pwd><br>
<tipe masukan=kirim nama=kirim nilai=kirim>
<%akhir jika%>
Ini hanya mendeteksi bahwa ketika nama pengguna adalah cnbruce dan kata sandinya adalah cnrose, sesi(pass)=true dihasilkan, yang dinilai di Global.asa.
Lima, terus gunakan imajinasi Anda
Tidak cukup hanya menghitung berapa banyak orang yang online, tetapi juga menentukan status online pengguna.
Seperti yang bisa Anda bayangkan, cara dasarnya adalah saat pengguna login, setel online ke 1 di login.asp (unggah jika ada database), tetapi saat pengguna offline, setel online ke 0. Untuk memperbaikinya, Anda perlu mengubah acara Session_OnEnd. Setel online ke 0 dalam acara ini (nilai 0 juga akan diunggah)...