ตัวแปร Session - ภาควิชาคณิตศาสตร์และคอมพิวเตอร์
Download
Report
Transcript ตัวแปร Session - ภาควิชาคณิตศาสตร์และคอมพิวเตอร์
Electronic Commerce
อาจารย์ชนิดา เรืองศริ วิ ฒ
ั นกุล หลักสูตรสาขาวิชา
เทคโนโลยีสารสนเทศ
Session and
Cookies
Company
LOGO
ปั ญหาการส่งข้อมู ลข้ามเพจ
้
่
ให้สร ้างเพจขึนมา
3 เพจ ชือ
page1.php,page2.php,page3.php
่ กล่องร ับข้อความสาหร ับกรอก
page1 มีฟอร ์มทีมี
่
่ ใ้ ช้ เมือกดปุ่
ม submit จะส่งค่าไปเรียก
ชือผู
page2.php
page2 มีฟอร ์มร ับหมายเลขบัตรเครดิตของผู ใ้ ช้
่
ม submit จะส่งค่าไปเรียก page3.php
เมือกดปุ่
page3 แสดงตัวแปรจาก page1 และ page2
2
Company
LOGO
ต ัวแปร Session
่ Hotmail เมือ
ตัวอย่างการใช ้ Session เชน
่ เรา
ื่ เข ้าใชและไปที
้
ลงชอ
เ่ พจต่างๆ ในเว็บเมล์
้
เซริ ฟ
์ เวอร์จะทราบว่าเราเป็ นผู ้ใชคนไหนไม่
วา่ จะ
ื่ ออก
เปลีย
่ นเพจไป จนกว่าเราจะลงชอ
้
ก่อนใชงานตั
วแปร session ต ้องเรียกใช ้
ั session_start() ก่อนคาสงั่
ฟั งก์ชน
แสดงผล (echo) และต ้องเขียนก่อนเริม
่ โค ้ด
html
้ ว
การอ่านหรือบันทึกค่าตัวแปร session ใชตั
่ ถ ้าต ้องการใชตั้ วแปร
แปร $_SESSION เชน
3
Company
LOGO
PHP Sessions
การใช้งาน
ื่ user มีคา่ u52wns
สร ้าง session ชอ
<?
session_start();
$_SESSION[“user”] = “u52wns”;
?>
Company
LOGO
PHP Sessions
การตรวจสอบความมีอยู ่ของ sessions ใช้
คาสัง่ isset
<?
isset($_SESSION[“user”]) {
//welcome message
} else {
//login form
}
Company
LOGO
ต ัวแปร Session จะหายไป
่
เมือไร
ผู ้ใชปิ้ ดเว็บเบราเซอร์
้ ได ้ติดต่อกับเซริ ฟ
ผู ้ใชไม่
์ เวอร์เป็ นเวลานาน
จนกระทั่ง session หมดอายุ
การกาหนดเวลา session หมดอายุ ให ้ไป
แก ้ไขไฟล์ c:\windows\php.ini เปลีย
่ นตัว
ื่ session.gc_maxlifetime ค่า
แปรชอ
เริม
่ ต ้นคือ 1440 (24 นาที)
้ งก์ชน
ั unset() สาหรับทาลาย
เรียกใชฟั
่
session แต่ละตัว เชน
unset($_SESSION[“user”] เพือ
่ ลบตัว
6
Company
LOGO
การลบต ัวแปร session ทุกตัว
ถ ้าต ้องการลบตัวแปร session ทุกตัวทีป
่ ระกาศ
ั
ไว ้ ควรใชฟั้ งก์ชน
session_destroy( )
ั นีจ
การใชฟั้ งก์ชน
้ ะทาการลบไฟล์ session ทุก
ตัวทีไ่ ด ้ประกาศไว ้ ทางฝั่ งเซริ ฟ
์ เวอร์ทัง้ หมด เรา
จะไม่สามารถเรียกใชตั้ วแปร session ได ้อีก จึง
้ างยิง่
ควรระวังการใชอย่
Company
LOGO
คุกกี ้ (Cookie)
ตัวแปร session จะถูกลบเมือ
่ ผู ้ใชปิ้ ดเว็บเบราเซอร์ ถ ้า
ต ้องการให ้ตัวแปรยังคงอยูห
่ ลังจากปิ ดเบราเซอร์ไป
แล ้ว ต ้องใชตั้ วแปรคุกกี้
Cookies โดยทั่วไปจะใชส้ าหรับระบุตวั ตนและความมี
อยูข
่ อง users ชว่ ยให ้ users ไม่จาเป็ นต ้อง login
้
ซ้าซอน
เป็ นไฟล์ขนาดเล็กทีถ
่ ก
ู สร ้างโดยสคริปต์ทางฝั่ ง
Server แล ้วฝั งตัวอยูบ
่ นคอมพิวเตอร์ทางฝั่ ง Clients
้ งก์ชน
ั setcookie()
ใชฟั
ื่ user มีคา่ เท่ากับ 0 และ
การสร ้างตัวแปรคุกกีช
้ อ
ิ นาทีข ้างหน ้า
หมดอายุในอีกสบ
setcookie(“user”, “0”, time() +600);
8
Company
LOGO
PHP Cookies
การตรวจสอบความมีอยูข
่ อง sessions ใชค้ าสงั่
isset
<?
isset($_COOKIE[“user”]) {
//welcome message
} else {
//login form
}
Company
LOGO
PHP Cookies
การลบ Cookies
ั setcookie โดยกาหนดให ้ expire
ใชฟั้ งก์ชน
เป็ นเวลาในอดีต
setcookie(“user”, “u48wns”, time() 3600);
Company
LOGO
ต ัวแปร Session กับ Cookie
Session มีข ้อดีคอ
ื ปลอดภัยสูง เพราะข ้อมูลที่
ถูกเก็บในตัวแปร session จะเก็บไฟล์ไว ้ทีฝ
่ ั่ ง
เซริ ฟ
์ เวอร์
้ ดเบราเซอร์ไป ตัว
คุกกีม
้ ข
ี ้อดีคอ
ื ถึงแม ้ผู ้ใชจะปิ
ี คือ
แปรคุกกีย
้ ังคงอยู่ (ถ ้ายังไม่หมดอายุ) ข ้อเสย
ความเป็ นสว่ นตัว บางเว็บไซต์ใชคุ้ กกีต
้ รวจสอบ
้ ้าเว็บไซต์ใดบ ้าง
ว่าผู ้ใชเข
่
ใช
ตั้ วขแปร
seesion
อายุ
อง Cookie
ถูก เก็บข ้อมูลสาคัญ เชน
กาหนดด้
รหั
สผ่าน วยเวลา
อายุของ Session ถูกกาหนดด้วยการ
ความแตกต่
างของ Cookie กั์ บ Session คือ
ทางานของเบราเซอร
Company
LOGO
การมีอยู ่ของ Session
Session เริม
่ มีอายุตงั ้ แต่ถก
ู ประกาศ และจะ
้
ยังคงมีอยูต
่ ราบเท่าทีเ่ บราเซอร์ยังคงเปิ ดใชงาน
อยู่
หมายความว่าตัวแปร session จะหมดอายุ
เมือ
่ เบราเซอร์ถก
ู ปิ ด และต ้องเป็ นการปิ ดทุก
หน ้าต่างด ้วย (ทัง้ ทีเ่ กีย
่ วข ้องและไม่เกีย
่ วข ้อง)
Company
LOGO
Session ดียงั ไง
้
เอาข ้อมูลของผู ้ใชไปเก็
บไว ้ทีฝ
่ ั่ งเซริ ฟ
์ เวอร์ไว ้
ทาไม ???
้ ค
เพราะปั ญหาของผู ้ใชที
่ ด
ิ ว่า cookie ไปละเมิด
ิ ธิสว่ นบุคคล จึงทาให ้เบราเซอร์ตา่ งๆ ต ้องให ้
สท
้
ผู ้ใชสามารถเลื
อกได ้ว่าจะอนุญาตให ้ใชคุ้ กกีไ้ ด ้
หรือไม่
ถ ้าผู ้ใชก้ าหนดไม่ยอมรับคุกกี้ ตัวแปรคุกกีก
้ ็ไม่ม ี
ิ ธิไ์ ปสร ้างไฟล์ไว ้ได ้ ดังนัน
สท
้ จึงเกิดปั ญหา หาก
้ ้หลายๆ
ว่าเราต ้องการเก็บค่าข ้อมูลเพือ
่ ใชได
ครัง้ ควรใช ้ session
Company
LOGO
แบบฝึ กหัด
ื่ ผู ้ใชและ
้
ให ้สร ้างฟอร์ม user.php เพือ
่ รับชอ
ื่ ผู ้ใชและ
้
รหัสผ่านจากผู ้ใช ้ และให ้สง่ ค่าชอ
รหัสผ่านไปยัง check.php
ื่ ผู ้ใช ้ และ
check.php ให ้ทาการตรวจสอบชอ
ื่ ผู ้ใช ้ และให ้
รหัสผ่าน หากเหมือนกันให ้แสดงชอ
ื่ ผู ้ใชนั้ น
นาชอ
้ ไปแสดงยังหน ้าต่อไปคือ
show.php