เมื่อทำในช่วงแรกๆ วิธีการล็อกอินก็ทำได้ง่ายๆ โดยใช้ ajax ก่อนล็อกอินจะถูกตัดสินว่ามีค่าในเซสชันหรือไม่ หากไม่มี ก็ไม่จำเป็นต้องล็อกอิน หน้าเข้าสู่ระบบจะปรากฏขึ้นเพื่อเข้าสู่ระบบ เนื่องจากฉันใช้เบราว์เซอร์ ff ฉันจึงไม่พบปัญหาใดๆ เมื่อฉันส่งมันให้กับผู้ใช้เมื่อสัปดาห์ที่แล้ว ฉันรู้สึกตกใจมากที่มันบอกว่ามันไม่ถูกต้องหลังจากเข้าสู่ระบบด้วย IE ผลลัพธ์ก็เป็นเช่นนี้จริงๆ - น่าอายมาก
รหัสเข้าสู่ระบบมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
//สอบถามจากเซิร์ฟเวอร์ว่ามีเซสชันอยู่หรือไม่
เจ.อาแจ็กซ์({
ประเภท:GET,
URL:sessioncheck.asp,
ข้อมูล:,
หมดเวลา: 1,000,
ข้อผิดพลาด: ฟังก์ชั่น () {
alert('ขออภัย ขณะนี้เซิร์ฟเวอร์ไม่ว่าง!');
-
ความสำเร็จ: ฟังก์ชั่น (comments_data) {
ถ้า (comments_data == 1){
el.createDialog(ตัวเลือก);
เจ.สตาร์ทโอเวอร์();
-
อื่น{
var sql = selectSQL(คีย์ค้นหา,รูปแบบ);
window.location.href = sql;
-
-
-
ประมาณนี้ครับ Sessioncheck.asp ไม่มีอะไรมากไปกว่าการตรวจสอบ session ครับ
คัดลอกรหัสรหัสดังต่อไปนี้:
ถ้า session(username) = แล้ว
ตอบกลับเขียน(1)
อื่น
ตอบกลับเขียน(2)
สิ้นสุดถ้า
ผลลัพธ์ก็คือเซสชัน (ชื่อผู้ใช้) ของ IE ไม่มีประโยชน์ และการตั้งค่าการหมดเวลาก็ไม่มีประโยชน์
ฉันตรวจสอบออนไลน์เป็นเวลานานและพบว่ามีปัญหาที่คล้ายกันเล็กน้อย ในที่สุดฉันก็พบสาเหตุ: ปัญหาแคช
เมื่อได้รับค่าอะซิงโครนัส หาก URL ยังคงไม่เปลี่ยนแปลง ข้อมูลในแคชจะถูกเรียกโดยตรง ซึ่งจะส่งผลให้ไม่ได้รับค่าในเซสชัน
วิธีแก้ปัญหานั้นง่ายมาก ล้างแคช asp ของ Google จำนวนมาก
ในที่สุด มีการเพิ่มย่อหน้าใน sessioncheck.asp ดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
การตอบสนองบัฟเฟอร์=จริง
Response.ExpiresAbsolute = ตอนนี้ () - 1
การตอบกลับหมดอายุ=0
Response.CacheControl=ไม่มีแคช
ถ้า session(username) = แล้ว
ตอบกลับเขียน(1)
อื่น
ตอบกลับเขียน(2)
สิ้นสุดถ้า