Nilai Cookies jauh lebih kompleks dibandingkan dengan koleksi ASP lainnya seperti Form dan ServerVariables. Cookie adalah sepotong kecil teks yang disimpan di sistem klien oleh browser dan dikirim dengan setiap permintaan ke server di domain yang mereka terapkan.
ASP mempermudah penerapan cookie. Anda bisa mendapatkan semua nilai cookie yang dikirim dengan permintaan dari kumpulan Cookies pada objek Permintaan, dan Anda dapat membuat atau memodifikasi cookie dan mengirimkannya kembali ke pengguna melalui kumpulan Cookies di Response. obyek.
Cookie berisi informasi yang dapat dibuat dengan dua cara. Cookie bernilai tunggal memberikan nilainya ke kode melalui kumpulan umum seperti ASP. Namun, setiap anggota suatu koleksi dapat menjadi suatu koleksi, dan cookie yang berisi informasi ini disebut cookie multi-nilai.
Membuat cookie bernilai tunggal relatif sederhana, sebagai berikut:
Response.Cookies("nama-item") = "nilai-item"
Untuk membuat cookie multi-nilai, Anda dapat menggunakan perintah berikut:
Response.Cookies("item -name" )("sub-item-name") = "sub-item-value"
menetapkan domain dan jalur aplikasi cookie serta masa berlakunya. Kami menggunakan:
Response.Cookies("item-name").domain = "url-domain"
Response.Cookies("nama-item").path = "jalur virtual"
Response.Cookies("item-name").expires = #date#
Biasanya klien hanya mengirimkan cookie ke server dengan permintaan ketika membuat permintaan untuk halaman di direktori tempat cookie dibuat. Dengan menentukan atribut path, Anda dapat menentukan di situs mana cookie ini valid dan cookie akan dikirim bersama permintaan tersebut. Jika cookie dikirim dengan permintaan halaman untuk seluruh situs, setel jalur ke "/".
Jika atribut Kedaluwarsa tidak disetel, cookie akan otomatis dihilangkan ketika browser saat ini ditutup.
Perhatikan bahwa cookie sudah dibuat saat kami mengirimkan output apa pun ke browser. Sebab, cookie ini merupakan bagian dari header HTTP halaman.
Di ASP 3.0, status buffering default aktif, dan tidak ada output yang dikirim kecuali Response.Flush digunakan untuk menentukan ini atau halaman telah mencapai akhir. Ini berarti bahwa kode yang membuat cookie dapat berada di mana saja pada halaman, dan dapat dieksekusi hingga output apa pun "dibuang" ke klien.
Untuk membaca cookie yang ada, gunakan koleksi Request.Cookies. Item di dalamnya dapat diakses satu per satu, mirip dengan metode yang digunakan untuk membuatnya.
StrSingleValue = Permintaan.Cookies("nama-item")
StrSubItemValue = Request.Cookies("item-name")("sub-item-name")
Perhatikan bahwa koleksi Request.Cookies (seperti semua koleksi Permintaan lainnya) bersifat hanya-baca. Koleksi Response.Cookies hanya dapat ditulisi. Faktanya, Anda dapat mengakses nama serangkaian cookie dalam koleksi ini, namun tidak dapat mengakses nilainya.
Menelusuri Koleksi Cookies
Untuk menggunakan koleksi Cookies dengan lebih nyaman, Anda dapat menggunakan atribut tambahan bernama Haskeys. Jika cookie yang diakses itu sendiri adalah sebuah koleksi, yaitu cookie multi-nilai, ini akan mengembalikan True. Dengan menggunakan properti Haskeys, Anda dapat melakukan iterasi melalui koleksi Request.Cookies yang lengkap untuk mendapatkan daftar semua cookie dan nilainya.
Untuk Setiap objek Dalam Permintaan.Cookies
Jika Permintaan.Cookies(objItem).HasKey Lalu
'Gunakan For Each yang lain untuk mengulangi semua subkunci
Untuk Setiap objItemKey di Request.Cookies(objItem)
Respon.Tulis objItem & “(“ & objItemKey & “) = “_
& Permintaan.Cookie(objItem)(objItemKey) & “<BR>”
Berikutnya
Kalau tidak
'Cetak string cookie seperti biasa
Respons.Tulis objItem & “ = ” & Permintaan.Cookies(objItem) & “<BR>”
Akhiri Jika
NextIni
sangat mirip dengan kode kompleks sebelumnya yang mengekstrak beberapa nilai dari koleksi Request.Form. Namun Anda dapat menggunakan atribut Haskeys di sini untuk menentukan apakah setiap entri merupakan satu set. Dalam contoh Formulir, properti Request.Form(item_name).Count harus ditanyakan karena anggota koleksi Formulir (dan semua koleksi lainnya kecuali cookie) tidak dapat merupakan koleksi sebenarnya. ASP hanya melakukan pekerjaan "di balik layar" dan mendapatkan nilai dari setiap koleksi multi-entri.
Perbedaan antara Form dan QueryString
Setelah memahami teknik mengakses berbagai koleksi ASP, pertanyaan lain perlu dipecahkan: Apa perbedaan antara koleksi Form dan QueryString? Jika Anda akan menggunakan ASP, Anda pasti harus menyadari perbedaan ini, tetapi Anda perlu merujuk pada cara kerja HTTP untuk memahami kembali dan memahaminya.
Ada dua metode umum untuk meminta halaman atau sumber daya lain dari server web melalui HTTP. Anda dapat menggunakan metode GET untuk mendapatkan sumber daya secara langsung, atau Anda dapat menggunakan POST untuk meneruskan nilai ke sumber daya terkait. Metode GET adalah defaultnya. Anda dapat melihat contoh permintaan HTTP di awal bab ini:
8/7/99 10:27:16 Terkirim GET /Store/Download.asp HTTP/1.1
Jika Anda memasangkan satu atau lebih nama Ketika nilai / ditambahkan ke URL halaman yang diminta, itu menjadi string kueri yang diminta dan diberikan ke halaman ASP dalam koleksi QueryString. Mengklik hyperlink pada halaman Web, pesan email, atau dokumen lain, atau memasukkan alamat di bilah alamat browser dan menekan Enter, atau mengklik tombol Tautan atau Favorit di browser, semuanya menggunakan metode GET.
Oleh karena itu, satu-satunya cara untuk meneruskan nilai ke ASP dalam tindakan ini adalah melalui koleksi QueryString, menambahkan nilai ke URL.
Nilai yang muncul di koleksi Request.QueryString dan diakses berfungsi dengan cara yang sama seperti contoh kumpulan Formulir yang kita lihat sebelumnya. Kombinasi URL dan string kueri:
http://mysite.com/process_page.asp?FirstName=Priscilla&LastName=Descartes
Nilai yang diberikan dalam koleksi QueryString dapat diakses sebagai berikut:
strFirstName = Request.QueryString("FirstName") 'Return "Priscilla"
strLastName = Permintaan.QueryString("LastName") 'Kembalikan "Descartes"
strRaw = Permintaan.QueryString
'Kembalikan
metode formulir GET dan POST "FirstName=Priscilla&LastName=Descartes".
Saat menggunakan segmen <FORM> di halaman, Anda dapat mengatur nilai atribut METHOD dari tag FORM yang dibuka ke "GET" atau "POST". nilai defaultnya adalah "DAPATKAN". Jika "GET" digunakan atau atributnya dihilangkan, browser mengikat nilai ini ke semua kontrol pada halaman, menjadi string kueri, dan dilampirkan ke URL halaman yang diminta.
Ketika permintaan ini tiba di server Web, nilainya disediakan oleh koleksi Request.QueryString ASP. Namun, jika Anda menyetel atribut METHOD ke "POST", browser menggabungkan nilai tersebut ke dalam header HTTP server pengirim dan menyediakannya ke ASP melalui koleksi Request.Form.
Omong-omong, metode POST dapat digunakan di semua bentuk HTML. Namun, ada batasan tertentu pada panjang string URL browser atau server. Oleh karena itu, menambahkan string yang panjang dapat menyebabkan overflow dan beberapa karakter string terpotong. Pada saat yang sama, string kueri muncul di bilah alamat browser dan di semua tautan dan favorit yang disimpan. Tidak hanya itu, tetapi juga menampilkan nilai yang tidak diinginkan dalam permintaan HTTP saat melewati server web, dan mungkin juga muncul di file log server Anda dan server perutean lainnya. Nilai dalam header permintaan HTTP jarang terlihat dan tidak muncul di file log.
Masalah kecil yang perlu diperhatikan dalam menggunakan metode POST adalah ketika pengguna mengunduh ulang <FORM>, nilai formulir tidak lagi dipertahankan dan nilainya kosong dan harus dimasukkan kembali. Namun, ketika dilampirkan ke URL, nilainya disimpan sebagai tautan dan akan dipertahankan dan oleh karena itu akan muncul di semua permintaan yang menggabungkan URL dengan string. Ini mungkin merupakan keuntungan atau kerugian tergantung pada aplikasinya dapat secara otomatis mempertahankan nilai pada halaman dalam rentang tertentu di klien).
Poin lainnya adalah kombinasi URL dan string kueri tidak boleh berisi spasi atau karakter ilegal lainnya, jika tidak, Navigator dan beberapa browser lain akan mengalami masalah. Karakter ilegal adalah karakter yang digunakan untuk memisahkan URL dan string kueri, seperti "/", ":", "?" dan "&" (IE dapat secara otomatis mengubah spasi ke format yang benar - tanda plus "+", Tapi karakter ilegal lainnya tidak dapat diproses)
Penggunaan cookie di ASP
Pada bagian ini kita akan mempelajari berbagai teknik yang menyediakan koleksi, metode dan properti untuk digunakan oleh kode ASP.
1) Detail pengguna disimpan dalam cookie.
Cookie dapat digunakan untuk menyimpan dua jenis nilai: nilai yang tidak ingin kita simpan saat browser ditutup (seperti informasi pendaftaran pengguna) dan nilai yang ingin kita simpan. simpan saat pengguna mengunjungi situs. Dalam setiap kasus, nilai cookie tersedia untuk ASP untuk setiap permintaan halaman dari browser pengguna.
Namun, perlu Anda ingat bahwa cookie hanya akan dikirim ke server ketika ada permintaan untuk halaman dalam jalur virtual (path) pada cookie. Secara default, jika nilai jalur tidak diatur dalam cookie, nilainya adalah jalur virtual halaman yang membuat cookie. Agar cookie dapat dikirim ke semua halaman situs, path="/" perlu digunakan.
Berikut ini contohnya. Dari halaman Login khusus, informasi pendaftaran pengguna disimpan dalam cookie. Karena tidak ada masa berlaku aplikasi, nilai cookie hanya dipertahankan hingga browser ditutup:
...
Permintaan.Cookies("Pengguna")("UID") = "<% = Permintaan("Nama Pengguna") %>"
Permintaan.Cookies("Pengguna")("PWD") = "<% = Permintaan("Kata Sandi") %>"
Request.Cookies(“User”).Path = “/adminstuff” 'Hanya berlaku untuk halaman admin
...
cookie ini sekarang akan ditemukan di setiap halaman yang diminta pengguna dari direktori adminstuff atau subdirektorinya. Jika tidak ada, Anda dapat mengarahkan pengguna ke halaman pendaftaran:
If (Request.Cookies("User")("UID") <> "alexhomer") _
Atau (Request.Cookies(“User”)(“PWD”) <> “secret”) Lalu
Respons.Redirect “login.asp?UserName=” & Permintaan.Cookies(“Pengguna”)(“UID”)
Akhiri Jika
...
Karena nama pengguna dalam cookie ditempatkan di string kueri URL Response.Redirect, jika terjadi kesalahan saat memasukkan kata sandi dan Anda ingin pengguna tidak perlu mengetik ulang nama pengguna, Anda dapat menggunakannya saat login. halaman asp:
<FORM ACTION=”check_user.asp” METHOD=”POST”>
<INPUT TYPE=”TEKS” NAMA=”Nama Pengguna”
VALUE=”<% = Permintaan.QueryString(“Nama Pengguna”) %>”><P>
<INPUT TYPE=”KIRIM” NILAI=”LOGIN”>
</FORM>
2) Memodifikasi cookie yang ada
Anda dapat menggunakan ASP untuk memodifikasi cookie yang ada, namun Anda tidak dapat mengubah hanya satu nilai dalam cookie. Saat memperbarui cookie di koleksi Response.Cookies, nilai yang ada akan hilang. Kita dapat membuat cookie dengan kode berikut, yang dapat digunakan:
Response.Cookies("VisitCount")("StartDate") = dtmStart
Response.Cookies("VisitCount")("LastDate") = Sekarang
Response.Cookies("VisitCount")("Kunjungan") = CStr(intVisits)
Response.Cookies("VisitCount").Path = "/" 'Berlaku untuk seluruh situs
Response.Cookies("VisitCount").Expires = DateAdd("m",3,Now)
Jika Anda ingin memperbarui nilai Kunjungan dan Tanggal Terakhir, Anda tidak boleh mengubah semua nilai terlebih dahulu, lalu menulis ulang seluruh cookie :
datDtart = Respons .Cookies("Hitungan Kunjungan")("Tanggal Mulai")
intVisits = Respon.Cookies("Hitungan Kunjungan")("Kunjungan")
Respon.Cookies("VisitCount")("Tanggal Mulai") = dtmStart
Response.Cookies("VisitCount")("LastDate") = Sekarang
Response.Cookies("VisitCount")("Kunjungan") = Cstr(intVisits)
Respon.Cookies("Hitungan Kunjungan").Jalur = “/”
Response.Cookies("VisitCount").Expires = DateADD("m",3,Now + 1) dan seperti hampir semua metode dan properti Respon lainnya, ini harus dilakukan sebelum menulis apa pun (yaitu membuka tag <HTML> atau teks apa pun atau HTML lainnya) untuk responsnya.