การกำหนด domain เมื่อมีการสร้างตัวแปร cookie ตัวอย่าง
ตัวอย่างที่ 1 กรณีกำหนด domain เป็น "www.ninenik.com"
<?php if(!isset($_COOKIE["cookie1"])){ // เช็คว่ามีตัวแปรนี้อยู่ก่อนแล้วหรือไม่ setcookie("cookie1", "ทดสอบ",time()+3600,"/","www.ninenik.com"); // กำหนดตัวแปร } ?>
ค่าตัวแปร cookie ในตัวอย่างที่ 1 สามารถเรียกใช้งาน ผ่าน domain ที่เป็น www.ninenik.com เท่านั้น แต่จะไม่สามารถเรียกใช้งานผ่าน ninenik.com ได้
คือ
www.ninenik.com/test_cookie.php
เรียกใช้งานตัวแปร cookie ตามตัวอย่างที่ 1 ได้
ninenik.com/test_cookie.php
เรียกใช้งานตัวแปร cookie ตามตัวอย่างที่ 1 ไม่ได้
แก้ปัญหา โดยใช้งานตามตัวอย่างที่ 2
ตัวอย่างที่ 2 กรณีกำหนด domain เป็น ".ninenik.com"
<?php if(!isset($_COOKIE["cookie1"])){ // เช็คว่ามีตัวแปรนี้อยู่ก่อนแล้วหรือไม่ setcookie("cookie1", "ทดสอบ",time()+3600,"/",".ninenik.com"); // กำหนดตัวแปร } ?>
ค่าตัวแปร cookie ในตัวอย่างที่ 2 จะสามารถเรียกใช้งานได้ทั้ง ผ่าน domain ที่เป็น www.ninenik.com และ ninenik.com ได้
หรือ กรณีต้องการให้เว็บไซต์ ลิ้งค์ไปที่หน้า ที่มี www นำหน้าทุกครั้งที่ไม่ได้มีการพิมพ์
เช่น พิมพ์แค่ ninenik.com เว็บก็จะลิ้งค์ไปที่หน้า www.ninenik.com
หรือ เมื่อเปิดไปหน้า
ninenik.com/test_cookie.php
ก็จะลิ้งค์ไปที่หน้า
www.ninenik.com/test_cookie.php
โดยการเพิ่มคำสั่งในไฟล์ .htaccess ดังนี้
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
โดยทำสั่งจากด้านบน จะทำให้มีการเติม www ให้ทุกครั้งหากไม่มีการพิมพ์ www นำหน้า
สำหรับการใช้งาน cookie ผ่าน sub domain นั้น เราสามารถเพิ่ม
คำสั่งต่อไปนี้ ลงในไฟล์ .htaccess เพื่อให้ cookie สามารถส่งค่า และเรียกใช้งานได้ใน
sub domain
php_value session.cookie_domain ".ninenik.com"
ด้วยคำสั่งนี้ที่เพิ่มเข้าไปในไฟล์ .htaccess จะทำให้ sub domain เช่น
demo.ninenik.com หรือ board.ninenik.com
สามารถเรียกใช้งาน ตัวแปร cookie จาก โดนเมนหลักได้
นอกจากการกำหนด โดยใช้ไฟล์ .htaccess แล้ว เราสามารถกำหนดผ่านไฟล์ php
เพื่อใช้งาน cookie ผ่าน sub domain ได้อีกวิธี โดยต้องเขียนไว้ด้านบนสุดของไฟล์ เช่นเดียว
กับการกำหนด ตัวแปร cookie
ตัวอย่าง
<?php ini_set('session.cookie_domain', '.ninenik.com') // ไว้ด้านบนสุดของไฟล์ ?>