Session Cross Subdomain
ปกติแล้ว SESSION สามารถใช้งานข้ามไดเร็คทอรี่ได้ภายใน domain เดียวกัน ไม่เหมือน Cookie ที่สามารถใช้งานได้เฉพาะไดเร็คทอรี่ใด ไดเร็คทอรี่หนึ่งเท่านั้น SESSION จึงเหมาะที่จะเก็บสถานะการ login มากกว่า Cookie เนื่องจากไม่ต้องกังวลว่าจะอยู่ในไดเร็คทอรี่ใด แต่ SESSION ก็ยังไม่สามารถใช้งานได้ในกรณีที่เว็บเราแบ่งเป็น subdomain แต่! ปัญหานี้แก้ไขได้ครับ
.htaccess
php_value session.cookie_domain ".mysite.com"
สร้างไฟล์ .htaccess แล้วใส่โค้ดนี้ลงไป แล้วก็เอาไปวาง ที่ root ของ Server จะใช้ได้ตลอดทุก subdomain ครับ (ถ้าไม่ได้ ก็ใส่ไฟล์นี้ ที่ root ของทุก subdomain เลยครับ)
การกำหนดค่าที่ถูกต้องของวิธีนี้ คือตุ้องมี จุด อยู่หน้า โดเมนด้วยนะครับ ถึงจะทำงาน
PHP
ini_set('session.cookie_domain', '.mysite.com') // ใส่บรรทัดบนสุดของเพจ
session_start();
เขียนลงบนโค้ด PHP โดยตรงในตำแหน่งที่ต้องการจะเรียกใช้ session ซึ่งก็คือ session_start(); วิธีนี้มีข้อเสียที่ต้องเขียนในทุกครังที่เรียกใช้ ไม่เหมือนกับวิธีแรกครับ ที่ไม่ต้องแก้ไขโค้ด
ยังมีอีกวิธีนึงที่พอประยุกต์ใช้ได้ครับ คือการใช้ session ที่กำหนดเอง
PHP
session_id($_GET[PHPSESSID]);
session_start();
วิธีนี้คือการใช้ session ที่กำหนดเองครับ โดยตอนเริ่มต้อนเราต้องกำหนดค่า $_GET[PHPSESSID] ไว้ก่อนด้วยตัวเอง อาจได้มาโดยการสุ่มก็ได้ แต่ในเวลาที่ต้องการจะให้ใช้งาน session เดียวกัน ก็ให้ทำการส่งค่านี้ไปยัง เพจที่ต้องการใช้ session เดียวกันได้ เช่น xxx.php?phpsessid=avsbeikmnrv เป็นต้น ก็จะทำให้เพจนั้นๆ ใช้ session เดียวกันกับต้นทางได้ ไม่ว่าจะอยู่ subdomain ไหนก็ตาม