วันอังคารที่ 14 ตุลาคม พ.ศ. 2557

การใช้ DateTime::Format


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



ตัวอย่าง


<?php

$date = new DateTime('2003-01-01');
echo $date->format('H:i:s d m Y');

?>



ผลลัพธ์
00:00:00 01 01 2003

วันจันทร์ที่ 13 ตุลาคม พ.ศ. 2557

รูปแบบการส่งค่า GET and POST



ส่งค่าข้อมูลในรูปแบบ GET

       อย่างที่บอกแล้วครับว่าการส่งข้อมูลแบบ GET จะส่งค่าผ่าน URL โดยตรง โดยที่จะระบุชื่อตัวแปรแยกเป็นตัว ๆ คั่นด้วยเครื่องหมาย & ตามรูปแบบข้างล่างนี้

       http://<ชื่อ Domain>/<ชื่อ Folder>/<ชื่อไฟล์ที่จะเอาค่าไปประมวลผล.php>?<ชื่อตัวแปรที่ 1=ค่า>&<ชื่อตัวแปรที่ 2=ค่า>

       ตัวอย่างเช่น

       http://www.nachiengmai.net/test.php?id=123&name=wacharapong

       การรับข้อมูลที่ส่งมา
               รูปแบบที่ 1

                       $_REQUEST["ชื่อตัวแปรที่ส่งมา"]
               รูปแบบที่ 2

                       $_GET["ชื่อตัวแปรที่ส่งมา"]

       ตัวอย่างเช่น

       http://www.nachiengmai.net/test.php?id=123&name=wacharapong  

       จาก URL ข้างบนส่งข้อมูล id,name ไปยังหน้าเพจ test.php ก็จะเขียนคำสั่งรับข้อมูลในเพจ test.php ดังนี้ จากตัวอย่างจะให้รูปแบบการรับข้อมูล
       รูปแบบที่ 1
               
               $id=$_REQUEST["id"]
               $name=$_REQUEST["name"]

       รูปแบบที่ 2
               
               $id=$_GET["id"]
               $name=$_GET["name"]

       หการนำไปใช้งานสามารถเลือกใช้รูปแบบใดรูปแบบหนึ่ง หลังจากนั้นค่าที่ส่งมาก็จะอยู่ใน ตัวแปรที่มารับค่าคือ $id และ $name และสามารถนำไปประมวลในหน้าเพจ test.php ได้เลย


ส่งค่าข้อมูลในรูปแบบ POST


       ตามที่ได้บอกไปแล้วว่า POST เป็นการส่งรูปแบบผ่านฟอร์ม ดังนี้ในวิธีนี้เราจึงต้องสร้างไฟล์ 2 ไฟล์

               -  ไฟล์แรกเป็นไฟล์ที่สร้างฟอร์มขึ้นมา เพื่อส่งไปประมวลผลที่ไฟล์ที่ 2
               -  ไฟล์ที่ 2 เป็นไฟล์ที่นำค่าที่ได้มาจากฟอร์มในไฟล์ที่ 1 มาประมวลผล


       ตัวอย่างเช่น

       <form name="form1" method="post" action="test.php">

               <input name="printto" type="text" id="printto">  //รับข้อมูล
               <input type="submit" name="Submit" value="พิมพ์">  // ปุ่มพิมพ์
       </form>
       
       จากตัวอย่าง ส่งข้อมูล แบบ POST สังเกตในส่วนของ method="post" ส่วน action="test.php" จะเป็นไฟลเพจที่จะส่งค่าไป

       การรับข้อมูลที่ส่งมา
               รูปแบบที่ 1

                       $_REQUEST["ชื่อตัวแปรที่ส่งมา"]
               รูปแบบที่ 2

                       $_POST["ชื่อตัวแปรที่ส่งมา"]

       ตัวอย่างเช่น
       
       <form name="form1" method="post" action="test.php">

               <input name="id" type="text" id="id">  //ป้อนรหัส
               <input name="name" type="text" id="name">  //ป้อนชื่อ
               <input type="submit" name="Submit" value="พิมพ์">  // ปุ่มพิมพ์
       </form>
       

               จากตัวอย่าง จะได้ฟอร์มกรอกข้อมูล คือ กรอกรหัสและชื่อ หลังจากกรอกข้อมูลเสร็จแล้ว คลิกปุ่มพิมพ์ ข้อมูลจะส่งไปที่เพจ test.php ตามที่กำหนดไว้ใน action ใน tag form
               ในส่วนของเพจ test.php ก็จะทำการรับข้อมูลโดยมีรูปแบบดังนี้

       รูปแบบที่ 1
               
               $id=$_REQUEST["id"]
               $name=$_REQUEST["name"]

       รูปแบบที่ 2
               
               $id=$_GET["id"]
               $name=$_GET["name"]

       สรุปก็คือไม่ว่าจะส่งมาข้อมาแบบ GET หรือ POST PHP ก็ใช้วิธีการรับค่าเหมือนกัน คือรับมาตรง ๆ ตัวเลย ส่งมาโดยใช้ชื่อตัวแปรว่าอะไรก็เติมเครื่องหมาย $ ข้างหน้า แล้วก็ใช้ได้เลย



               

การแปลงรูปแบบวันที่ระหว่าง PHP กับ MySQL


วันที่และเวลาใน MySQL แตกต่างเล็กน้อย เวลาแสดงผลตามปกติแต่วันที่ของ MySQL ป้อนปีก่อน ตัวอย่าง 29th August 2000 สามารถป้อน เป็น 2000-08-09 หรือ 00-80-29 วันที่ดึงจาก MySQL อยู่ในลำดับตามนี้
เมื่อวางวันที่ MySQL จาก PHP สามารถวางได้ในรูปแบบถูกต้องด้วยการใช้ ฟังก์ชัน date ( ) ข้อระวังเล็กน้อยคือ ควรใช้เวอร์ชันของวันและเดือน ให้นำหน้าด้วยศูนย์เพื่อหลีกเลี่ยงความสับสนของ MySQL

ฟังก์ชัน DATE_FORMAT( )

ถ้าทำการแปลงใน MySQL สามารถใช้ฟังก์ชัน DATE_FORMAT ( ) และ UNIX_TIMESTAMP ฟังก์ชัน DATE_FORMAT ( ) ทำงานเหมือนกับ PHP แต่ใช้รหัสรูปแบบต่างกันถ้าต้องการรูปแบบวันที่เป็น MM-DD-YYYY แทนที่ รูปแบบปกติ ของ MySQL คือ YYYY-MM-DD การแปลงใช้ไวยากรณ์ คิวรี่ดังนี้
SELECT DATE_FORMAT(date_column, '%m%d%Y')
FOME tablename;

รหัส %m แสดงเดือนด้วยตัวเลข 2 ตำแหน่ง  %d แสดงวันด้วยตัวเลข 2 ตำแหน่ง และ %y แสดงมีด้วยตัวเลข 4 ตำแหน่ง ตาราง 3.3.5 แสดงรหัสรูปแบบ MySQL สำหรับวัตถุประสงค์นี้
ตาราง 3.3.5 รหัสรูปแบบสำหรับ ฟังก์ชัน DATE_FORMAT ( ) ของ MySQL
รหัสคำอธิบาย
%Mเดือน เป็นชื่อเต็ม
%Wชื่อวันในสัปดาห์ เป็นชื่อเต็ม
%Dวันของเดือน เป็นตัวเลขที่มีข้อความต่อท้าย (เช่น 1st )
%Yเดือน เป็นตัวเลข 4 ตำแหน่ง
%yเดือน เป็นตัวเลข 2 ตำแหน่ง
%aชื่อวันในสัปดาห์ เป็นชื่อย่อ 3 ตัวอักษร
%dวันของเดือนเป็นตัวเลขที่นำหน้าด้วยศูนย์
%eวันของเดือนเป็นตัวเลขที่ไม่นำหน้าด้วยศูนย์
%mเดือนเป็นตัวเลขที่นำหน้าด้วยศูนย์
%Eเดือนเป็นตัวเลขที่ไม่นำหน้าด้วยศูนย์
%bเดือนเป็นชื่อย่อ 3 ตัวอักษร
%jวันของปีเป็นตัวเลข
%Hชั่วโมงเป็นเวลา 24 ชั่วโมงที่นำหน้าด้วยศูนย์
%kชั่วโมงเป็นเวลา 24 ชั่วโมงที่ไม่นำหน้าด้วยศูนย์
%h หรือ %Iชั่วโมงเป็นเวลา 12 ชั่วโมงที่นำหน้าด้วยศูนย์
%lชั่วโมงเป็นเวลา 12 ชั่วโมงที่ไม่นำหน้าด้วยศูนย์
%iนาทีเป็นตัวเลขที่นำหน้าด้วยศูนย์
%Rเวลาในรูปแบบ 12 ชั่วโมง (hh:mm:ss [Am|Pm])
%Tเวลาในรูปแบบ 24 ชั่วโมง (hh:mm:ss)
%S หรือ %sวินาทีเป็นตัวเลขที่นำหน้าด้วยศูนย์
%PAM หรือ PM
%wวันของสัปดาห์เป็นตัวเลขจาก 0 (วันอาทิตย์) ถึง 6 (วันเสาร์)
ตัวอย่างการแสดงวันที่ใบสั่งซื้อ (orderdate) จากตารางข้อมูล Orders
SELECT DATE_FORMAT(orderdate, '%m%d%Y')
FOME orders;
ฟังก์ชัน UNIX_TIMESTAMP ทำงานคล้ายกัน แต่แปลงคอลัมน์เป็นเวลาประทับ Unix
SELECT UNIX_TIMESTAMP (date_column)
FROM tablename;
จะส่งออกรูปแบบวันที่เป็นเวลาประทับ Unix
ตัวอย่างการแสดงวันที่การปรับปรุงจากตารางเป็นเวลาประทับ Unix
SELECT DATE_FORMAT(lastupdate)
FOME loggedinusers;

ฟังก์ชัน STR_TO_DATE( )

ฟังก์ชัน STR_TO_DATE ทำหน้าที่แปลงวันที่ในรูปแบบข้อความจากฟังก์ชัน DATE_FORMAT() ให้กลับไปเป็นค่าของเวลา รหัสการแปลงใช้เหมือนกับฟังก์ชัน DATE_FORMAT() ตามตาราง 20.6
INSERT INTO orders(customerid, amount, orderdate)
VALUES (12, 825.50, STR_TO_DATE('%d.%m.%y', '20/08/06');

การใช้งาน Session การลงทะเบียน Session

Session

เนื่องจาก  HTTP เป็นโปรโตคอลแบบไม่มีสถานะ หมายความว่า โปรโตคอลนี้ไม่มีวิธีของตัวเองในการรักษาสถานะระหว่าง 2 ทรานแซคชัน เมื่อผู้ใช้ขอ 1 เพจ แล้วตามด้วยอีกเพจ จะสามารถบอกว่าคำขอทั้งคู่มาจากผู้ใช้เดียวกัน
ความคิดของการควบคุม session คือ ความสามารถในการสืบค้นผู้ใช้ระหว่าง 1 session บนเว็บ
session ใน PHP เป็นการขับเคลื่อนด้วย session ซึ่งเป็นหมายเลขกลุ่มเข้ารหัส session ID ได้รับการสร้างโดย PHP และเก็บอยู่ที่ด้านลูกข่ายตลอดอายุของ session และสามารถเก็บบน เครื่องคอมพิวเตอร์ของผู้ใช้ หรือ ส่งผ่าน URL
บางครั้งอาจจะใช้เว็บเก็บ session id ใน URL ถ้ามีข้อความของข้อมูลสุ่มใน URL นี่เป็นอีกรูปแบบของการควบคุม session
ขั้นตอนพื้นฐานของการใช้ session คือ
  • เริ่มต้น session
  • ลงทะเบียนตัวแปร session
  • ใช้ตัวแปร session
  • ถอนทะเบียนตัวแปรและลบ session

เริ่มต้น Session

ก่อนใช้การทำงาน session ต้องเริ่มต้น session ซึ่งมี 3 วิธี คือ
วิธีแรก เริ่มต้นสคริปต์ด้วยการเรียกฟังก์ชัน session_start
session_start( );
ฟังก์ชันนี้ตรวจสอบ session id ปัจจุบันถ้าไม่จะสร้างขึ้นมา ถ้ามีอยู่แล้วจะโหลดตัวแปร session จดทะเบียนจากจะสามารถใช้ได้ การเรียก session_start ( ) ควรอยู่ที่เริ่มต้นของสคริปต์ที่ใช้ session
วิธีที่ 2 session ที่เริ่มต้นเมื่อพยายามจดทะเบียนตัวแปร session
วิธีที่ 3 session สามารถเริ่มต้นด้วยการตั้งค่า PHP ให้เริ่มต้นอย่างอัตโนมัติเมื่อมีคน เข้ามายังเว็บ ควรทำลักษณะนี้ใช้ตัวเลือก session_auto_start ในไฟล์ php.ini

การลงทะเบียนตัวแปร Session

ในการสืบค้นตัวแปรจากสคริปต์หนึ่งไปยังอีกแห่ง  ต้องมีการลงทะเบียนด้วยการเรียก session_register ( ) ตัวอย่างเช่น ลงทะเบียนตัวแปร $myvar
$myvar1 = 5;
session_register("myvar1");
ใน PHP5 สามารถตั้งค่าไปที่ $_SESSION array ได้โดยตรง
$_SESSION['myvar2'] = "Hello world";
หมายเหตุ    การส่งผ่านข้อความเก็บชื่อตัวแปรไปยัง session_register ข้อความนี้ต้องไม่มีสัญลักษณ์ $
ตัวแปรจะถูกบันทึกและสืบค้นค่า ตัวแปรจะได้รับการสืบค้นจนกระทั่ง session สิ้นสุดหรือจนกระทั่งถอนทะเบียน
การลงทะเบียนสามารถทำได้มากกว่า 1 ตัวแปรในครั้งเดียวโดยการใช้เครื่องหมายจุลภาคแบ่งชื่อตัวแปร
session_register("myvar1", "myvar2");

การเก็บค่าของตัวแปร Session

เมื่อเริ่มต้น session แล้วจะทำให้ตัวแปร session มี scope ที่สามารถใช้ได้
จากนั้นสามารถเข้าถึงตัวแปรนั้น ถ้า register_globals เป็น on จะเข้าถึงผ่านชื่อรูปแบบย่อ เช่น $myvar ถ้าไม่เป็น on การสืบตัวแปรผ่าน $_SESSION เช่น $_SESSION["myvar"] ถ้าตั้งค่า register_long_arrays เป็น on ในไฟล์ php.ini จะสามารถใช้ $HTTP_SESSION_VARS
ตัวแปร session ไม่สามารถเขียนทับโดย POST และ GET ซึ่งเป็นส่วนความปลอดภัยที่ดี แต่มีความ ยุ่งยากบ้างเมื่อเขียนคำสั่ง
ตรวจสอบการลงทะเบียนตัวแปร session สามารถเรียกฟังก์ชัน session_is_registered
$result = session_is_registered("myvar");
คำสั่งนี้ตรวจว่า $myvar เป็นตัวแปร session ที่ลงทะเบียนและส่งออก TRUE หรือ FALSE นอกจากนี้สามารถตรวจสอบตัวแปรกับ $_SESSION array ได้

การใช้ Cookie กับ Session

cookie มีปัญหาที่เกี่ยวข้องคือ บาง browser ไม่ยอมรับ cookie และผู้ใช้บางคนอาจจะไม่ให้ใช้ cookie กับ browser ของพวกเขา ที่เป็นเหตุผลหนึ่งที่ session ของ PHP ใช้เมธอดคู่ cookie/URL
เมื่อใช้ session ของ PHP จะไม่ต้องตั้งค่า cookie เองฟังก์ชัน session จะดูแลเรื่องนี้ให้ 
ฟังก์ชัน session_get_cookie_params ( ) สามารถใช้ดูข้อมูลของ cookie ที่ตั้งค่าโดยการควบคุม session และส่งออก array ที่สัมพันธ์ เดิมหน่วยข้อมูล lifetime, path, domain และ secure รวมทั้งสามารถใช้
session_set_cookie_params ($lifetime, $path, $domain, $secure);

เพื่อตั้งค่าพารามิเตอร์ session cookie

Session ID

PHP จะใช้ cookie โดยค่าเริ่มต้นด้วย session ถ้าเป็นไปได้ cookie จะได้รับการตั้งค่าเพื่อเก็บ session id โดย session id มีลักษณะนี้
PHPSESSID8e8c198c623d1f726931d93928b4e07a

วิธีต่อมาคือการใช้ session id กับ URL การตั้งค่านี้เกิดขึ้นอย่างอัตโนมัติ ถ้าคอมไฟล์ PHP ด้วยตัวเลือก - - enable–trans–sid นอกจากนี้ อีกวิธีคือสามารถฝัง session id ในการเชื่อมโยง ดังนั้นส่งผ่านได้ session ID ได้รับการเก็บในค่าคงที่ SID การส่งผ่านเองให้เพิ่มไปยังท้ายของการเชื่อมโยงคล้ายกันกับพารามิเตอร์ GET
<a href="link.php?<?=sid?">
โดยทั่วไป จะเป็นการง่ายกว่าด้วยการคอมไฟล์ - - enable–trans–sid เป็นไปได้ หมายเหตุ รวมถึงค่าคงที่ SID จะทำงานเฉพาะแบบนี้คอนฟิก PHP ด้วย - - enable–track–vars เป็นการใช้ session อย่างง่าย

ถอนทะเบียนตัวแปรและลบ Session

เมื่อเสร็จสิ้นการใช้ตัวแปร การถอนทะเบียนตัวแปร สามารถใช้ฟังก์ชัน session_unregister ( )
session_unregister("myvar1");
ฟังก์ชันนี้ต้องการชื่อตัวแปรที่จะถอนทะเบียนเป็นข้อความและไม่มีสัญลักษณ์  $ ฟังก์ชันนี้สามารถถอนทะเบียนเพียง 1 ตัวแปร session ในแต่ละครั้ง อย่างไรก็ตามสามารถใช้ session_unset ( ) เพื่อถอนทะเบียนตัวแปร session ปัจจุบันทั้งหมด
เมื่อเสร็จสิ้น session ให้ถอนทะเบียนตัวแปรทั้งหมดและทำความสะอาด session id
session_destroy();
ลบ cookie
setcookie(session.name(), "", time()-3600);

จากนั้นลบข้อมูลใน $_SESSION array ว่างเปล่า
$_SESSION = array();

ตัวอย่างการทำงานของ Session

ตัวอย่างนี้จะใช้ 3 เพจ บนเพจแรก จะเริ่มต้นและอ่านข้อมูลเข้าสู่อ๊อบเจคที่เป็น constructor ที่สร้างมาจากไฟล์รวม  empinfo.inc  ตามรายการคำสั่ง 2.1.1
รายการคำสั่ง 2.1.1  empinfo.inc

<?php
//empinfo.php
class EmpInfo
{
private $emp_id;
private $userName;
private $empName;
private $address;
private $salary;
function __construct($in_emp_id, $in_userName, $in_empName, $in_address, $in_salary)
{
$this->emp_id = $in_emp_id;
$this->userName = $in_userName;
$this->empName = $in_empName;
$this->address = $in_address;
$this->salary = $in_salary;
}
public function get_UserID() { return $this->emp_id; }
public function get_UserName() { return $this->userName; }
public function get_EmpName() { return $this->empName; }
public function get_Address() { return $this->address; }
public function get_Salary() { return $this->salary; }
}
?>
                การอ่านข้อมูลจากอ๊อบเจคและส่งค่าให้ $_SESSION array ทำในเพจที่ 1 และแสดงผลด้วยฟังก์ชัน var_export และ var_dump เพื่ออ่านค่าตัวแปรและค่าของ session ตามรายการคำสั่ง 2.1.2
รายการคำสั่ง 2.1.2 session_03_obj1.php

<?php
// session_03_obj1.php
require_once('empinfo.inc');
ini_set('session.name', 'EMPSESSION');
session_start();
?>
<html>
<head>
<title>Read Object to Session</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</head>
<body>
<?php
//
// สาธิตการตั้งค่าอ๊อบเจคไปยังตัวแปร session
$emp = new EmpInfo(123123, "somsaks", "สมศักดิ์ แสงทอง",
"145 ถนนเสรีไทย แขวงบึงกุ่ม เขตบึงกุม กทม.", 12500);
$_SESSION['current_emp'] = $emp;
var_export($_SESSION);
echo "<br/><br/>\n";
var_dump(session_id());
echo "<br/>\n";
var_dump(session_name());
echo "<br/>\n";
var_dump(session_get_cookie_params());
echo "<br/>\n";
?>
<br/><br/>
<a href="session_02_obj2.php">คลิกไปหน้าต่อไป</a>
<br/>
</body>
</html>
ผลลัพธ์ของเพจ
array ( 'current_emp' => EmpInfo::__set_state(array( 'emp_id' => 123123, 'userName' => 'somsaks', 'empName' => 'สมศักดิ์ แสงทอง', 'address' => '145 ถนนเสรีไทย แขวงบึงกุ่ม เขตบึงกุม กทม.', 'salary' => 12500, )), )

string(32) "704e7ef925717c5060d5bd5c54db98c5"
string(10) "EMPSESSION"
array(4) { ["lifetime"]=> int(0) ["path"]=> string(1) "/" ["domain"]=> string(0) "" ["secure"]=> bool(false) }
เมื่อเริ่มต้นสคริปต์ต่อไปโดยการเรียก session_start ( )  และส่งค่าจาก $_SESSION array ไปยังอ๊อบเจค emp สำหรับการแสดงผล การส่งผ่านทำตามปกติ
$emp = $_SESSION['current_emp'];
การเริ่มต้น session และลบ session
<?php
// delete session
session_destroy();
// delete session cookie
setcookie(session_name(), "", time()-3600);
// destroy $_SESSION array
$_SESSION = array();
?>
จากนั้นให้ฟังก์ชันแสดงผลลัพธ์จะปรากฎเป็นค่าว่าง
No more $emp as object.
array(0) { } 
string(0) "" 
string(10) "EMPSESSION" 
array(4) { ["lifetime"]=> int(0) ["path"]=> string(1) "/" ["domain"]=> string(0) "" ["secure"]=> bool(false) }

เรื่องของ Cookie และการตั้งค่า Cookie

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"];

Credit By :: widebase / Julaphak

Object Oriented Programming

7. Object Oriented Programming

ภาษาโปรแกรมสมัยใหม่ มักจะสนับสนุนหรือต้องการวิธีแบบ Object oriented programming เพื่อพัฒนาซอฟต์แวร์ ซึ่ง PHP สามารถพัฒนาโปรแกรมประยุกต์ประเภทนี้ได้
  • แนวคิด Object Oriented Programming
  • การประยุกต์เบื้องต้น
  • การขยายอ๊อบเจค

 Credit By :: widebase / Julaphak

คำสั่งใช้ใหม่และฟังก์ชัน

6. คำสั่งใช้ใหม่และฟังก์ชัน

คำสั่งใช้ใหม่ (reuse code) นำไปสู่ความตรงกัน ความน่าเชื่อถือ การบำรุงรักษาได้สะดวก โดยเริ่มจากเทคนิคแบบโมดูลและคำสั่งใช้ใหม่  เริ่มต้นการใช้ require () และ include () เพื่อใช้คำสั่งเดียวกันบนมากกว่าหนึ่งเพจ นี่เป็นคำอธิบายความเหนือกว่าของ server side include
  • คำสั่งใช้ใหม่
  • ฟังก์ชันใน PHP