Cookies Sessions Headers

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
การแก้ปัญหาการใช้งาน ADO กับ Database อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.
Advertisements

CHAPTER 14 Database Management
ASP.NET Uthai ShiangJan Information and Communication Technology.
การจัดทำเว็บไซต์สำเร็จรูปด้วยโปรแกรม Joomla!
จัดทำโดย น. ส. ดวงกมล งามอยู่เจริญ เลขที่ 8 น. ส. ณัชชา เชื้อตา เลขที่ 6 เตรียมบริหารธุรกิจปี 1.
การเพิ่ม ลบ จำกัดสิทธิ์ User จัดทำโดย 1. นายธัชนนท์ ต๊ะต้องใจ 1-B เลขที่ 4 2. นาย ไพบูรณ์ อินทะซาว 1-B เลขที่ 23.
Server Object. 2 z ใช้ในการควบคุม และบริหารเว็บเซิร์ฟเวอร์ ซึ่งทำด้วยการเขียนสคริปต์ใน แอปพลิเคชั่น ASP ( โดยเรียกใช้เมธอด หรือกำหนดค่าพรอพเพอร์ตี้ของ.
การใช้งานโปรแกรม SPSS
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
Computer in Business เรื่อง การใช้งาน Access เบื้องต้น.
1. Select query ใช้สำหรับดึงข้อมูลที่ต้องการ
และสร้างเว็บไซต์ประเภทCMS
ซอฟต์แวร์และการเลือกใช้
7 เทรนด์ การตลาดออนไลน์ปี 2014 แรงแน่ ! ในปีที่ผ่านมา การเปิดตัวเครือข่าย 3G ในประเทศ ทำให้คำว่า “การตลาดออนไลน์ (Online Marketing)” กันมากขึ้น แล้วในปี
ระดับชั้น มัธยมศึกษาปีที่ ๑ ใช้เพื่อคลิ๊กไปสู่ หน้าถัดไป ใช้เพื่อคลิ๊กกลับ หน้าเดิม ใช้เพื่อคลิ๊กกลับสู่ หน้าหลัก ใช้คลิ๊กเมื่อต้องการ ออกจากระบบ.
PHP: Session. What is a PHP Session? Session variables solve this problem by storing user information to be used across multiple pages (e.g. username,
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
วิธีการใ ช้ โปรแกรมคำนวณคะแนน กลุ่มเกษตรกรดีเด่น กองพัฒนาสหกรณ์ด้าน การเงินและร้านค้า กรมส่งเสริม สหกรณ์
MTH 261 File Management. File Management File Management จะอธิบายเกี่ยวกับการเขียน ส่วนจัดการแฟ้มข้อมูล เราสามารถที่จะเขียน โปรแกรมเพื่อเรียกใช้แฟ้มข้อมูลที่เรามี
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
MEE 231 Computer Programming สัปดาห์ที่ 1 MIT App Inventor เรียนรู้การใช้งานเบื้องต้น ทดสอบการเชื่อมต่อโปรแกรมกับโทรศัพท์มือถือ
Project Management by Gantt Chart & PERT Diagram
ระบบตัวแทนจำหน่าย/ ตัวแทนขายอิสระ
“วิธีการใช้งาน PG Program New Version สำหรับ PGD”
อาจารย์อภิพงศ์ ปิงยศ บทที่ 3 : รูปแบบการเชื่อมต่อเครือข่ายและส่วนประกอบของเครือข่ายท้องถิ่น (Topologies and LAN Components) Part3.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การทำ Normalization 14/11/61.
การติดต่อฐานข้อมูลและการแสดงผล
Introduction to VB2010 EXPRESS
หน่วยการเรียนที่ 6 เรื่อง การจัดการฐานข้อมูลด้วย PHP Function
ความรู้เบื้องต้นเกี่ยวกับ PHP Introduction to PHP
อาจารย์อภิพงศ์ ปิงยศ บทที่ 2 : แบบจำลองเครือข่าย (Network Models) part1 สธ313 การสื่อสารข้อมูลและเครือข่ายคอมพิวเตอร์ทางธุรกิจ อาจารย์อภิพงศ์
การติดต่อฐานข้อมูลและการแสดงผล
การพัฒนาการใช้งานในระบบเว็บ
Document Management Solution
บทที่ 5 เครื่องมือสืบค้นข้อมูล (Search Engine)
อาจารย์อภิพงศ์ ปิงยศ บทที่ 3 : รูปแบบการเชื่อมต่อเครือข่ายและส่วนประกอบของเครือข่ายท้องถิ่น (Topologies and LAN Components) Part3.
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
ระบบตัวแทนจำหน่าย/ ตัวแทนขายอิสระ
โครงสร้างภาษา C Arduino
Work Shop 1.
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
SPEI R & R Studio Program User Manual.
Basic Input Output System
การติดต่อฐานข้อมูลและการแสดงผล
Android Programming Getting Start Prawit Pimpisan Computer Science
บทที่ 8 การควบคุมโครงการ
คำสั่ง Create , Insert, Delete, Update
การจัดเตรียมเครื่องมือและข้อมูล
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การสร้างโมเดลจำลองความสัมพันธ์ ระหว่างข้อมูล E-R Model
วิธีการกำหนดค่า Microsoft SharePoint ของคุณ เว็บไซต์ออนไลน์
PHP (3) - Function - cookie - Session
บริษัท พัฒนาวิชาการ (2535) จำกัด
ภัยคุกคาม ที่เกิดขึ้นในระบบสารสนเทศ
SMS News Distribute Service
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
หน่วยการเรียนรู้ การเขียนโปรแกรมภาษาขั้นพื้นฐาน เรื่อง โครงสร้างพื้นฐาน HTML 5 รหัส รายวิชา ง23102 การงานอาชีพและเทคโนโลยี 6 กลุ่มสาระ การงานอาชีพและเทคโนโลยี
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
อินเทอร์เน็ตเบื้องต้น และการออกแบบเว็บไซต์
การเติบโตของฟังก์ชัน (Growth of Functions)
บทที่ 4 การจำลองข้อมูลและกระบวนการ (Data and Process Modeling)
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
โครงการถ่ายทอดเทคโนโลยีถนนรีไซเคิลเพื่อลดขยะพลาสติกใน 4 ภูมิภาค
ระบบการส่งต่อข้อมูลอาการไม่พึงประสงค์จากการแพ้ยา
การพัฒนาการทำแผล หอผู้ป่วยพิเศษร่มเย็น 4
ใบสำเนางานนำเสนอ:

Cookies Sessions Headers 6 State management Cookies Sessions Headers HTTP เป็นโปรโตคอลใช้ส่งข้อมูลระหว่างเบาร์เซอร์ และเว็บไซต์ต่างๆ แต่จะน้อยคนจะรู้ว่า HTTP เป็น โปรโตคอลแบบ stateless ซึ่งหมายความว่า ทุกทำส่งที่ส่งมายังเว็บเซอร์เวิร์บ เป็นคำสั่งอิสระ ที่ถือเป็นคำสั่งหนึ่งๆ ที่แยกต่อกัน การใช้งานคำสั่งที่แยกต่อกันนี้ยากที่จะรู้ว่า คำสั่งก่อนหน้านี้สัมพันธ์กับคำสั่งที่ส่งมาใหม่ ซึ่งสำคัญ กับธุรกิจออนไลน์ หรือบริการที่ต้องการรู้ว่าใครทำอะไรไว้บ้าง ที่ต่อเนื่องหรือสัมพันธ์ต่อกัน PHP ใช้ cookies และ sessions เป็นจัดการกับปัญหานี้ ที่ใช้สร้างเป็น cookies หรือ sessions ได้อย่างไม่ง่ายดาย และนอกจากนี้ ในสไลด์นี้ยังอธิบายการส่ง headers ไปยังเบราเซอร์แทนการใช้ค่าปริยาย อ.ธีระพล ลิ้มศรัทธา

Working with Cookies Cookies basics Cookie Attributes Cookie Headers Setting Cookies Reading Cookies Removing Cookies

Cookies Basics คุกกี้เป็นไฟล์เล็กๆ ที่เก็บอยู่บนเคลื่อนของไคลเอ็นท์ คุกกี้ หนึ่งยาวได้ไม่เกิน ๔ กิโลไบท์ คุกกี้ถูกใช้เพื่อให้เครื่องเซิร์บเวอร์จดจำเครื่องลูกได้ คุกกี้สามารถอ่านได้เฉพาะเว็บไซต์ หรือโดเมนที่เป็นเจ้าของ คุกกี้เท่านั้น หนึ่งโดเมนหนึ่งอ่านได้ไม่เกิด ๒๐ คุกกี้ จำนวนคุกกี้มากที่สุด อาจกำหนดได้โดยระบบของผู้ใช้งาน เอง และมักเป็น ๓๐๐ คุกกี้ คุกกี้คือเท็กไฟล์ ที่เก็บไว้ระบบของผู้ใช้งานเว็บไซต์ ไฟล์นี้ประกอบด้วยข้อมูลที่เว็บไซต์สามารถอ่านกลับได้ ทำให้เว็บไซต์รูปว่าผู้ใช้เป็นผู้ใช้ที่เคยแวะมายังเว็บไซต์นี้ ตัวอย่างเช่น การที่เก็บเว็บไซต์รู้ว่าควรจะแสดงผลเนื้อหาของเว็บไซต์ให้เหมาะสมกับผู้ใช้งาน เนื้อจากทราบว่าใครเป็นผู้ใช้บริการ จึงสามารถแสดงผลได้ตามความสนใจของผู้ใช้งานแต่ละรายได้ การส่งคุกกี่เป็นการส่งจากเว็บไซต์ไปเก็บที่ระบบของผู้ใช้งานเว็บไซต์จึงอาจมีอัตรายกับผู้ใช้งานได้ หากผู้บริการเว็บไซต์ประสงค์ร้าย หรือผู้อ่านที่นำคุกกี่ไปใช้ในทางไม่ดี ดังนั้น ความปลอดภัยจึงเป็นประเด็นที่ควรให้ความสำคัญกับ คุกกี้ คุกกี้มีคุณสมบัติด้านความปลอดภัย คือ คุกกี้สามารถอ่านได้เฉพาะเว็บไซต์ หรือโดเมนที่เป็นเจ้าของคุกกี้เท่านั้น หนึ่งโดเมนหนึ่งอ่านได้ไม่เกิด ๒๐ คุกกี้ คุกกี้หนึ่งยาวได้ไม่เกิน ๔ กิโลไบท์ จำนวนคุกกี้มากที่สุด อาจกำหนดได้โดยระบบของผู้ใช้งานเอง และมักเป็น ๓๐๐ คุกกี้

Cookie Attributes Attribute Description Example Name=value ชื่อและค่าของคุกกี้ ‘email=a@a.com Expires วันหมดอายุ ‘expires=Monday , 25-Jan-12 23:59:59 IST’ Domain เป็นโดเมนของคุกกี้ ‘domain=thaiweb.com’ Path เป็นเส้นทางที่อ้างอิงตามโดเมน ‘path=/’ Secure เมื่อมีการใช้คุกกี้แอททริบิ้วนี้ จะต้องอ่านคุกกี้ด้วยการต่อเชื่อมแบบ secure HTTP ‘secure’ แอททริบิ้วส์ ของคุกกี้ มีด้วยกันหลายตัว แต่มีห้าตัวที่ใช้กันเป็นพื้นฐานคือ Name ชื่อและค่าของคุกกี้ Expire วันหมดอายุ Domain เป็นโดเมนของคุกกี้ และเฉพาะโดเมนนี้เท่านั้นที่อ่านคุกกี้นี้ได้ Path เป็นเส้นทางที่อ้างอิงตามโดเมน การกำหนด “/” เป็นการบอก server root และทำให้โดเมนนี้(ทั้งหมด) อ่านคุกี้นี้ได้ Secure เมื่อมีการใช้คุกกี้แอททริบิ้วนี้ จะต้องอ่านคุกกี้ด้วยการต่อเชื่อมแบบ secure HTTP

Cookie Headers คุกกี้จะถูกส่งระหว่างผู้ใช้งานเว็บไซต์กับ เว็บไซต์ให้บริการ โดยผ่าน HTTP headers Set-Cookie: username=john; path=/; domain=.thiswebsite.com; expires=Friday, 25-Jan-08 23:59:50 IST Set-Cookie: location=UK; path=/; domain=.thiswebsite.com; คุกกี้จะถูกส่งระหว่างผู้ใช้งานเว็บไซต์กับ เว็บไซต์ให้บริการ โดยผ่าน HTTP headers ยกตัวอย่างเช่น การกำหนดคุกกี้ เว็บไซต์จะต้องส่ง Set-Cookie ที่ เฮดเดอร์จะประกอบด้วยข้อมูลของคุกกี้ ดังเขียนเป็นตัวอย่างว่า Set-Cookie: username=john; path=/; domain=.thiswebsite.com; expires=Friday, 25-Jan-08 23:59:50 IST Set-Cookie: location=UK; path=/; domain=.thiswebsite.com; ทำนองเดียววกันกับ ถ้าคุกกี้ตัวหนึ่งใช้สำหรับเว็บไซต์หนึ่ง เบราเซอร์ของผู้ใช้จะส่งข้อมูลของคุกกี้ ใน ‘Cookie:’ ไว้ในเฮดเดอร์ เมื่อผู้ใช้ใช้บริการเว็บไซต์เจ้าของคุกกี้ ดังเขียนได้ว่า Cookie: username=john; location=UK

การอ่านคุกกี้จากระบบ ในเครื่องเราเอง Internet Explorer เก็บคุกกี้ไว้ใน C:/Documents and Settings/[username]/cookies Mozila Firefox เก็บคุกกี้ไว้ที่ C:/Documents and Settings/[username]/Application Data/Mozilla/Firefox/Profiles/[profilename]/cookies.txt. Google Chrome เก็บที่ใด

Setting Cookies <?php // set multiple cookies setcookie('username', 'whitewhale', time()+129600, '/'); setcookie('email', 'john@somewebsite.com', time()+86400, '/'); setcookie('role', 'moderator', time()+3600, '/');//one hour ?> การส่งค่าคุกกี้เมื่อส่งสำเร็จ จะคืนค่า true แต่ไม่รับประกันว่าส่งแล้วจะมีการ บันทึกในระบบของผู้ใช้บริการเว็บไซต์หรือไม่ เส้นทาง “/” จะหมายถึง ใช้ได้ทั้งโดเมน และซับโดเมน 86400 คือ 1 วัน (24x60x60) การใช้ PHP ทำงานกับคุกกี้เป็นเรื่องง่ายๆ เพียงใช้ฟังก์ชัน setcookie( ) ซี่งสามารถใช้ได้ทั้ง การกำหนดค่า หรืออ่านค่า ฟังก์ชันนี้รับตัวแปรเข้า หกตัว คือ name, value, expire (Unix time stamp), domain, path, secure คุกกี้จะคืนค่า true ถ้าการส่งคุกกี้ทำงานสำเร็จ แต่ถ้าไม่ได้บอกว่า การจัดเก็บในระบบของผู้ใช้เบราเซอร์สำเสร็จหรือไม่ (เป็นไปได้ว่าผู้ใช้ไม่อนุญาตให้บันทึกคุกกี้ในระบบ) ตัวอย่างการเขียนเข่น <?php // set a cookie setcookie('email', 'john@somewebsite.com', mktime()+129600, '/'); ?> แต่ก็อาจเขียนได้หลายคกกี้พร้อมกันก็ได้ ดังตัวอย่างในสไลด์นี้

ข้อควรระวัง: คุกกี้เขียนที่เฮดเดอร์ไฟล์ ปัญหา Warning: Cannot modify header information - headers already sent by ... ข้อควรระวังคือ คุกกี้เขียนที่เฮดเดอร์ไฟล์ การกำหนดคุกกี้ (setcookie) จะต้อง เขียนก่อนการเกิดเอาท์พุทใดๆ จากการเขียนโค้ด php การเข้ารหัสอักษรที่พิมพ์ ต้องเป็น UTF-8 without BOM <? echo "Hello World !!"; header("content-type: text/html; charset=utf-8"); ?> <? header("content-type: text/html; charset=utf-8"); echo "Hello World !!"; ?> http://www.codetukyang.com/html/technic/error_cannot_modify.htm

Reading Cookies <?php // read cookie if (isset($_COOKIE['email'])) { echo 'Welcome back, ' . $_COOKIE['email'] . '!'; } else { echo 'Hello, new user!'; } ?> คุกกี้กำหนดให้ใช้สำหรับโดเมน เพราะตัวแปรพิเศษชื่อ $_COOKIE ที่เก็บเป็นอาร์เรย์ใน คำสั่ง PHP ที่ทำงานอยู่บนโดเมน ดังตัวอย่างการใช้ในสไลด์หน้านี้

Removing Cookies <?php // remove cookie $ret = setcookie('role', 'moderator', time()-1600, '/admin'); if ($ret) { echo 'Cookie headers successfully transmitted.'; } ?> การนำคุกกี้ออก ใช้คำสั่ง setcookie( ) ตามด้วยชื่อ และวันหมดอายุของคุกกี้

ทดลองด้วยตนเอง : การใช้ setcookie( ) <?php // if form submitted // write cookie with settings if (isset($_POST['submit'])) { $ret1 = (isset($_POST['name'])) ? setcookie('name', $_POST['name'], mktime() + 36400, '/') : null; $ret2 = (isset($_POST['seat'])) ? setcookie('seat', $_POST['seat'], $ret3 = (isset($_POST['meal'])) ? setcookie('meal', $_POST['meal'], $ret4 = (isset($_POST['offers'])) ? setcookie('offers', implode(',', $_POST['offers']), mktime() + 36400, '/') : null; //36400 = 10 days (36400 seconds) } // read cookie and assign cookie values // to PHP variables $name = isset($_COOKIE['name']) ? $_COOKIE['name'] : ''; $seat = isset($_COOKIE['seat']) ? $_COOKIE['seat'] : ''; $meal = isset($_COOKIE['meal']) ? $_COOKIE['meal'] : ''; $offers = isset($_COOKIE['offers'])? explode(',',$_COOKIE['offers']): array(); ?> <!DOCTYPE html> <html> <head> <title>Saving and Restoring User Preferences</title> </head> <body> <h2>Saving and Restoring User Preferences</h2> <h3>Set Your Flight Preferences</h3> // if form submitted, display success message Thank you for your submission. // if form not submitted, display form } else { <form method="post" action="setcookies.php"> Name: <br /> <input type="text" size="20" name="name" value="<?php echo $name; ?>" /> <p> Seat selection: <br /> <input type="radio" name="seat" value="aisle" <?php echo ($seat == 'aisle') ? 'checked' : ''; ?>>Aisle</input> <input type="radio" name="seat" value="window" <?php echo ($seat == 'window') ? 'checked' : ''; ?>>Window</input> <input type="radio" name="seat" value="center" <?php echo ($seat == 'center') ? 'checked' : ''; ?>>Center</input> Meal selection: <br /> <input type="radio" name="meal" value="normal-veg" <?php echo ($meal == 'normal-veg') ? 'checked' : ''; ?>>Vegetarian</input> <input type="radio" name="meal" value="normal-nveg" <?php echo ($meal == 'normal-nveg') ? 'checked' : ''; ?>>Non-vegetarian</input> <input type="radio" name="meal" value="diabetic" <?php echo ($meal == 'diabetic') ? 'checked' : ''; ?>>Diabetic</input> <input type="radio" name="meal" value="child" <?php echo ($meal == 'child') ? 'checked' : ''; ?>>Child</input> I'm interested in special offers on flights from: <br /> <input type="checkbox" name="offers[]" value="LHR" <?php echo in_array('LHR', $offers) ? 'checked' : ''; ?>>London (Heathrow)</input> <input type="checkbox" name="offers[]" value="PAR" <?php echo in_array('PAR', $offers) ? 'checked' : ''; ?>>Paris</input> <input type="checkbox" name="offers[]" value="ROM" <?php echo in_array('ROM', $offers) ? 'checked' : ''; ?>>Rome (Ciampino)</input> <br/> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>

การดู cookie ใน Google chrome เครื่องมือ ตั้งค่า แสดงการตั้งค่าขั้นสูง ความเป็นส่วนตัว การตั้ง เนื้อหา คุกกี้และข้อมูลไซต์ทั้งหมด

Try: Login form <?php // if form not yet submitted // display form if (!isset($_POST['submit'])) { $username = (isset($_COOKIE['username'])) ? $_COOKIE['username'] : ''; ?> <!DOCTYPE html> <html> <head></head> <body> <h2>Login Form</h2> <form method="post" action="log_in2.php"> Username: <br /> <input type="text" name="username" value="<?php echo $username; ?>"/> <p> Password: <br /> <input type="password" name="password" value="<?php echo $username; ?>" /> <input type="checkbox" name="sticky" checked /> Remember me <input type="submit" name="submit" value="Log In" /> </form> </body> </html> } else { $username = $_POST['username']; $password = $_POST['password']; // check input if (empty($username)) { die('ERROR: Please enter your username'); } if (empty($password)) { die('ERROR: Please enter your password'); if (isset($_POST['sticky'])) { $ret1 = (isset($_POST['username'])) ? setcookie('username', $_POST['username'],mktime() + 36400, '/') : null; $ret2 = (isset($_POST['password'])) ? setcookie('password', $_POST['password'],mktime() + 36400, '/') : null; else $ret1 = (isset($_POST['username'])) ? setcookie('username', $_POST['username'],mktime() - 36400, '/') : null;

Working with Sessions Session Basics Creating Sessions and Session Variables Removing Sessions and Session Variables

Session Basic การใช้คุกกี้บางที่อาจไม่ปลอดภัยพอ เพราะคุกกี้เก็บข้อมูลไว้ ที่เครื่องไคลเอ็นท์ ทั้งหมด ผู้ใช้อาจปรับแต่งคุกกี้ได้เอง เว็บไซต์ที่ต้องการความปลอดภัยสูงจะเก็บข้อมูล Session ไว้ ที่เครื่องเซิร์บเวอร์ แต่ session identifier จะเก็บที่เครื่องไคล เอ็นท์ คล้ายกับคุกกี้ หรือส่งผ่าน URL ใน PHP คุกกี้ของเซสชันจะมีชื่อว่า PHPSESSID

Creating Sessions <?php // start session session_start(); // register session variables $_SESSION['name'] = 'Ronald'; $_SESSION['species'] = 'Rabbit'; ?> Note: Session can’t keep object that contain Connection Object(PDO connection)

Reading Sessions <?php // start session session_start(); // read session variables // output: 'Welcome back, Ronald Rabbit' echo 'Welcome back, ' . $_SESSION['name'] . ' ' . $_SESSION['species'] ; ?>

ข้อระวังในการบันทึกเซสชัน โดยค่าปริยายแล้ว PHP จะบันทึกข้อมูลเซสชันบนเซิร์บเวอร์ ที่ /tmp ไดเร็กทรอรี่ สำหรับของ Windows ที่ไม่มีไดเร็กทรอรี่ นี้ให้ ให้แก้ที่ไฟล์ php.ini และเปลี่ยน session.save_path กรณีที่เบราเซอร์ไม่อนุญาติให้บันทึก คุกกี้ที่จะทำเซสชัน ให้ แก้โดยการ ส่งเซสชันไอดี (identifier) ผ่าน url แทน ด้วยการ กำหนด session.use_trans_sid ในไฟล์ php.ini เป็น true ทุกเซสชันจะกำหนดเวลาการใช้งานเซสชัน กำหนดได้ผ่าน ไฟล์ php.ini ที่ตัวแปร session.gc_maxlifetime

Removing Session การลบตัวแปรเซสชัน ใช้ ฟังก์ชัน unset( ) <?php session_start(); // start session unset($_SESSION['name']); // erase session variable ?> หรือจะใช้ seesion_destroy( ) เพื่อยกเลิกทุก เซสชัน รวมทั้งตัวแปรเซสชัน session_destroy(); // erase session

Test Counter Read File $myfile = fopen("counter.txt", "r") or die("Unable to open file!"); $counter = fread($myfile,filesize("counter.txt")); Write File $myfile = fopen("counter.txt", "w") or die("Unable to open file!"); $txt = $counter; fwrite($myfile, $txt); Close File Fclose($myflle); session_start(); echo "<h2>Hello</h2>"; function readCounter(){ $_SESSION['new_user'] = $_SERVER['REMOTE_ADDR']; $myfile = fopen("counter.txt", "r") or die("Unable to open file!"); $counter = fread($myfile,filesize("counter.txt")); fclose($myfile); if (isset($_SESSION)) { if ($_SESSION['new_user'] != $_SESSION['old_user']){ $counter += 1; $myfile = fopen("counter.txt", "w") or die("Unable to open file!"); $txt = $counter; fwrite($myfile, $txt); } $_SESSION['old_user'] = $_SESSION['new_user']; return $counter; echo "Counter:" . readCounter();

Solution session_start(); function readCounter(){ $myfile = fopen("counter.txt", "r") or die("Unable to open file!"); $counter = fread($myfile,filesize("counter.txt")); fclose($myfile); $ip = $_SERVER['REMOTE_ADDR']; if (!isset($_SESSION[$ip])) { $_SESSION[$ip] = $ip; $counter += 1; $myfile = fopen("counter.txt", "w") or die("Unable to open file!"); $txt = $counter; fwrite($myfile, $txt); } return $counter; echo "Counter:" . readCounter();

Try: Tracking Previous Visited Page การอ่านเวลาแต่ละเซสชัน foreach ($_SESSION['visits'] as $v) { echo date('d M Y h:i:s', $v) . '<br/>'; } การเขียน เซสชัน ในรูปอาร์เรย์ใช้ $_SESSION['visits'][] = mktime(); <?php // start session session_start(); ?> <!DOCTYPE > <html> <head> <title>Project 9-2: Tracking Previous Visits To A Page</title> </head> <body> <h2>Project 9-2: Tracking Previous Visits To A Page</h2> if (!isset($_SESSION['visits'])) { echo 'This is your first visit.'; } else { echo 'You previously visited this page on: <br/>'; foreach ($_SESSION['visits'] as $v) { echo date('d M Y h:i:s', $v) . '<br/>'; } </body> </html> // add current date/time stamp to session array $_SESSION['visits'][] = mktime();

HTTP Headers

Using HTTP Headers การใช้ header ทั่วไป <?php // redirect to www.php.net header('Location: http://www.php.net'); ?> ข้อมูลเฮดเดอร์จะต้องส่งก่อน เอาท์พุดใดๆ ของ html เราทดสอบก่อนส่งด้ด้วย headers_sent() <?php if (!headers_sent()) { header('Cache-Control: no-cache'); header('Content-Type: text/plain'); echo 'Headers sent.'; } else { die ('ERROR: Cannot send headers!'); } ในเนื้อหาที่ผ่านมา คุณได้เห็น PHP ส่งข้อมูล คุกกี้ ผ่าน เฮดเดอร์ การส่งข้อมูลผ่านเฮดเดอร์ สามารถส่งได้ผ่านฟังก์ชัน header( ) ในกรณีทั่วไป ใช้เฮดเดอร์ กับ ‘Location:’ เพื่อเชื่อมกับ URL ที่ใหม่ เช่น ใช้ว่า <?php // redirect to www.php.net header('Location: http://www.php.net'); ?> การส่ง HTTP header จะต้องส่งข้อมูลก่อน เอาท์พุทใด ของ html มิฉะนั้นจะเกิดความผิดพลาดขึ้นได้ เราอาจทดสอบการส่งเฮดเดอร์ก่อนการส่งได้ด้วยคำสั่ง headers_sent() ตามตัวอย่างโค้ดต่อไปนี้ <?php // check if headers sent // if no, send headers // if yes, display error message if (!headers_sent()) { header('Cache-Control: no-cache'); header('Content-Type: text/plain'); echo 'Headers sent.'; } else { die ('ERROR: Cannot send headers!'); }

ทดสอบข้อมูล header <?php // control caching header('Cache-Control: no-cache'); // set content-type header('Content-Type: text/plain'); // print header list print_r(headers_list()); ?>

Try: Cookies, Session, Header in Form