ปัญหา ajax กับ session
คือทำ login แบบ ajax นะคะ
ในส่วนของหน้า login ถ้าไม่มี action ตรงกับที่กำหนดก็จะทำการสร้าง session ขึ้นเป็นค่าว่าง
ถ้า login เข้ามาก็จะทำการตรวจสอบข้อมูลก่อนว่าถูกหรือไม่ ถ้าถูกก็กำหนดค่าให้กับ session ซึ่งค่าตรงนี้ลองพิมพ์ออกมาก็สามารถแสดงค่าออกมาได้ เมื่อ login สำเร็จจะให้ส่งค่า session นี้ไปอีกหน้า ปัญหาคือค่า session ที่ส่งไปเป็นค่าว่าง
ลองศึกษาตามบทความที่มี ลองทำตามดูแล้วค่า session ก็เป็นค่าว่างอยู่ดีนะคะ
ในส่วนของหน้า login ถ้าไม่มี action ตรงกับที่กำหนดก็จะทำการสร้าง session ขึ้นเป็นค่าว่าง
ถ้า login เข้ามาก็จะทำการตรวจสอบข้อมูลก่อนว่าถูกหรือไม่ ถ้าถูกก็กำหนดค่าให้กับ session ซึ่งค่าตรงนี้ลองพิมพ์ออกมาก็สามารถแสดงค่าออกมาได้ เมื่อ login สำเร็จจะให้ส่งค่า session นี้ไปอีกหน้า ปัญหาคือค่า session ที่ส่งไปเป็นค่าว่าง
ลองศึกษาตามบทความที่มี ลองทำตามดูแล้วค่า session ก็เป็นค่าว่างอยู่ดีนะคะ
นอกนั้นไม่มีความคิดเห็นอะไร เนื่องจากข้อมูลไม่เพียงพอ จะตอบคำถาม
เมื่อ login สำเร็จจะไปยังหน้า member.php แต่ในส่วนนี้ถ้ายังไม่ได้ทำการ login แล้วไปกดลิงก์ไปหน้า member.php ก็จะบอกให้ login ก่อนซึ่งในส่วนประกอบจะเหมือนหน้า index.php เพียงแต่ว่าตรงไฟล์ content จะเปลี่ยนมาแสดงข้อความแทน
ลองได้กำหนดค่า $_SESSION[username] = 'aaa'; ในไฟล์ login.php แล้วให้ลองพิมพ์ค่าในหน้า member.php ก็พิมพ์ออก
แต่ที่นี้พอ login ถ้าค่าที่ได้ไม่เป็นค่าว่างก็จะใช้ ajax เรียกไฟล์ chkLogin.php ใช้ตรวจสอบถ้าข้อมูลไม่ถูกต้องก็แสดงข้ผิดพลาดออกมาซึ่งตรงนี้ก็ไม่มีปัญหา แต่ถ้า login สำเร็จก็จะกำหนดค่า $_SESSION[username] = 'bbb' ไว้ด้วย ส่วนในฟังก์ชั่น javascript ก็ให้ไปเรียกหน้า member.php มาโดยใช้ฟังก์ชั่น window.location='member.php'
แต่ที่นี้ว่าเมื่อลอง login ดูปรากฏว่าค่า $_SESSON[username] = 'aaa' คือค่ามันไม่เปลี่ยนเป็น 'bbb' นะคะ
1.ไม่ได้ใส่ sessioin_start(); ที่บรรทัดแรกของไฟล์
2.page เป็น UTF-8 แต่มี BOM
- ได้ใส่ session_start(); ไว้ทุกหน้าแล้วคะ
- ส่วนที่บอกว่าอาจเกิดจากมี BOM ก็ไม่น่าจะใช่นะคะเพราะใช้ editPlus เขียนตลอดนะคะแล้วปรับให้เซฟเป็น UTF-8
ตอนนี้ก็เซฟใหม่หมดทุกไฟล์ ก็ยังไม่หายนะคะ
อีกอย่างก่อนที่จะเกิดปัญหา ก่อนหน้านั้นลองเทสดูก็ได้นะคะหรือว่าจะเกี่ยวกับ server หรือเปล่าคะ
ทดสอบบน localhost หรือยังล่ัะ ว่าโค้ดทำงานปกติหรือเปล่า (ถ้ายังก็ถือว่าเป็นความผิดที่ไม่น่าให้อภัย เนื่องจากไม่รอบคอบ และไม่แยกแยะปัญหา)
พอดีว่าทำบน server จริงเลยนะคะ เขียนโค้ดไปก็อัพไปเทสไป แต่ได้ลองทดสอบทำการส่งค่า session ไปอีกหน้าแบบปกติก็ส่งได้นะคะ สรุปก็เลยไม่รู้ว่าเป็นเพราะอะไร สงสัยต้องลบ subdomain แล้วลงไฟล์ใหม่
มีคำถามต่อคะ case คล้ายๆกัน
กรณีที่เราใช้ ajax ตรวจสอบข้อมูล แล้วต้องการนำผลที่ได้จากการตรวจสอบ อย่างเช่น ส่งค่า 9 กับ 2 ไปประมวลผลด้วย ajax ซึ่งนำค่าไปบวก ได้ค่า 11 มา ปกติเราจะให้แสดงผลออกมาในหน้าเดิม แต่ที่นี้เราต้องการใช้ค่า 11 ที่ได้มาส่งไปยังอีกไฟล์หนึ่งเพื่อนำไปประมวลผลหรือใช้อ้างอิง จะส่งค่านี้ไปอีกหน้ายังไงคะ
1.บันทึกผลลัพท์ลงบน SESSION
2.บันทึกผลลัพท์ลงบน COOKIE
3.บันทึกผลลัพท์ลงบนฐานข้อมูล (ใช้ db เป็น seesion)
4.ส่งผลกลับ แล้วนำค่าที่ได้ไปใส่ input เพื่อใช้ส่งต่อ
5.ส่งผลกลับ แล้วนำค่าที่ได้ใส่ตัวแปร Javascript เพื่อใช้งานต่อ
6,7,8,9,10.....