PHP

Home

PHP Tutorial
Knowledge Developer Database Internet Resource
Cookie และ Session
1. Cookie
2. Session
3. ความปลอดภัยของ Session
 
การสร้างโปรแกรมประยุกต์เว็บ
1. Cookie และ Session
2. ระบบการรับรองของ PHP และ MySQL
3. XML และ XHTML
4. PEAR
 
PHP
PHP เบื้องต้น
การสร้างโปรแกรมประยุกต์เว็บ
PHP ระดับสูง
 
Internet
PHP
SSI
HTML
AJAX
 
การสร้างโปรแกรมประยุกต์เว็บ > Cookie และ Session

Cookie

cookie เป็นวิธีหนึ่งในการเก็บร่องรอยปฏิบัติการของผู้ใช้กับเว็บ โดยการส่งสารสนเทศเป็นบิตขนาดเล็กไป ยังลูกข่ายที่ประกอบด้วยชื่อและค่าเป็นข้อความ เมื่อลูกข่ายทำคำขอไปยังแม่ข่าย บิตชิ้นนี้ได้รับการส่งไปยังแม่ข่าย

cookie ในเครื่องลูกข่ายมีรูปแบบดังนี้

Set-Cookie: Name = value; [expire = sec;] [path = path;] [domain = Domain_Name; ] [secure]

ปฏิบัติการพื้นฐาน

เริ่มต้นจากการตั้งค่าและการเข้าถึง cookie ใน PHP

การตั้งค่า Cookie จาก PHP

การตั้งค่า cookie ใน PHP เองใช้ฟังก์ชัน setcookie ( ) ให้ใช้ไวยากรณ์นี้
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

ถ้าตั้งค่า cookie เป็น
setcookie("mycookie" , "value");

cookie นี้มีชื่อว่า "mycookie" และค่าเป็น "value"

คำสั่ง setcookie ต้องอยู่บรรทัดแรกของสคริปต์ เนื่องจาก cookie ต้องเป็นส่วนหนึ่งของส่วนหัว

การเข้าถึง Cookie

เมื่อลูกข่ายส่ง cookie กลับมาที่แม่ข่ายพร้อมคำขอ การเข้าถึงค่าสามารถใช้ $_COOKIE ที่เป็น superglobal array รวมทั้งให้ $HTTP_COOKIE_VARS ถ้าตั้งค่า register_long_arrays เป็น on ในไฟล์ php.ini และแต่ละค่าของ cookie เป็นตัวแปร global ถ้าตั้งค่า register_global ใน php.ini

<?php

echo $_COOKIE[ " mycookie " ];

?>

$_COOKIE รับค่า cookie ที่ส่งมากับคำขอ ดังนั้นการตั้งค่าในคำสั่งจึงไม่มีผลกับ $_COOKIE ในทันที ค่าจะเปลี่ยนก็ต่อเมื่อ browser ส่งคำขอที่ มี Set-Cookie กลับมายังเพจนั้น

<?

setcookie("new" , "Hello");
echo $_COOKIE["new"]; // ไม่ได้ตั้งค่าเป็น Hello

?>


ภาพ 2.1.1 การเปลี่ยนแปลงค่าของ $_COOKIE

การควบคุม Cookie

ในฟังก์ชัน setcookie ที่มี 6 พารามิเตอร์
setcookie(name [,value [, expire [,path [,domain [, secure]]]]])

expire ตั้งค่าวันที่หรือช่วงเวลาการหมดอายุ เช่น 5 August 2006 หรือให้หมดใน 1 ชั่วโมง ตัวอย่าง การตั้งให้หมดใน 2 ชั่วโมง หรือ 7200 วินาที
setcookie("mycookie" , "value", time()+7200);

หลังจากหมดอายุแล้ว browser จะไม่ส่งค่าไปยังแม่ข่าย ถ้าตั้งค่าเป็น 0 จะพิจารณาเป็น session cookie โดย cookie ได้รับการเก็บไว้ในหน่วยความจำและมีอายุเท่ากับการเปิด browser ถ้าปิด cookie นี้จะหายไป

Path ระบุพื้นที่การใช้ cookie เช่น "/member" จะมีผลเฉพาะเพจใน URL ที่เริ่มต้นด้วย member แต่ถ้ากำหนดเป็น "/" จะมีผลกับทุกเพจในไซต์
domain เป็นการจำกัดหรือขยายเครื่องสำหรับ cookie
secure ระบุสถานะให้มีผลเฉพาะการเชื่อมต่อ HTTPS ด้วยค่า 1 กำหนดความปลอดภัยตามค่าเริ่มต้นหรือ 0 ไม่กำหนด

การลบ Cookie

cookie สามารถลบได้โดยการเรียก setcookie ( ) อีกครั้งด้วยชื่อเดียวกันแต่ไม่ตั้งค่า value และกำหนดเวลา expire ย้อนหลัง
setcookie("mycookie" , "", time()-3600);

browser จะได้รับรู้การสิ้นสุดของ cookie และลบทิ้ง

Cookie Array

PHP สามารถสร้าง associate array สำหรับ cookie ตัวอย่าง การบันทึกชื่อ ที่อยู่ และจำนวนเงินซื้อสินค้าใน cookie array

setcookie("UserInfo[name]" , $_POST["username"]);
setcookie("UserInfo[address]" , $_POST["user_address"]);
setcookie("UserInfo[amount]" , $_POST["user_amount"]);

การเข้าถึง cookie ในครั้งต่อไปใน $_COOKIE array สามารถตั้งค่าให้ตัวแปรได้ดังนี้

$name = $_COOKIE["UserInfo"]["name"];
$addr = $_COOKIE["UserInfo"]["address"];
$amt = $_COOKIE["UserInfo"]["amount"];

 


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak