1 / 25

PHP: Hypertext Preprocessor

บทที่ 23 (Webserver Management). PHP: Hypertext Preprocessor. สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร. วัตถุประสงค์การเรียนรู้ประจำบท.

percy
Télécharger la présentation

PHP: Hypertext Preprocessor

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 23 (Webserver Management) PHP:Hypertext Preprocessor สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร

  2. วัตถุประสงค์การเรียนรู้ประจำบทวัตถุประสงค์การเรียนรู้ประจำบท • ในบทนี้ จะได้เรียนรู้วิธีการติดต่อกับเว็บเซิร์ฟเวอร์ เช่นการกำหนดข้อมูลเฮดเดอร์ (HTTP Header) ที่เว็บเซิร์ฟเวอร์จะส่งไปยังเว็บบราวเซอร์หลังจากมีการร้องขอเพจหนี่งๆ มา และการใช้งานตัวแปร $_SERVER เพื่อหาข้อมูลบางอย่างเกี่ยวกับตัวเซิร์ฟเวอร์และเพจที่กำลังถูกประมวลผล

  3. กิจกรรมการเรียนการสอนกิจกรรมการเรียนการสอน • บรรยายโดยผู้สอนและใช้เอกสารประกอบการสอนของผู้สอน • สอนโดยใช้สื่อคอมพิวเตอร์ผ่านเครื่องฉาย • อภิปรายในชั้นเรียนร่วมกัน • ให้นิสิตค้นคว้าเพิ่มเติมจากตำราและเอกสารที่เกี่ยวข้อง • ทำแบบฝึกหัดท้ายบท

  4. การประเมินผล • ประเมินผลจากการตอบคำถามและอภิปรายในชั้นเรียน • ทำแบบฝึกหัดท้ายบท • ทำรายงานส่ง

  5. รู้จักกับ HTTP Header ตัวอย่างของข้อมูลเฮดเดอร์ที่เว็บเซิร์ฟเวอร์ส่งมาให้เว็บบราวเซอร์พร้อมๆกับเนื้อหาของเพจที่เว็บบราวเซอร์ร้องขอไป (ในที่นี้ไม่ได้แสดงเนื้อหาของเพจ ซึ่งจะอยู่ต่อจากข้อมูลนี้อีกที) HTTP/1.1 200 OK Cache-Control: private Content-Type:text/html; charset_UTF-8 Set-Cookie: PREF=ID=3012de85f31fa84c:TM=1132109741:LM=1132109741: S=RykkDzZuyvT0VW-N; expires=Sun,17-jan-2038 19:14:07 GMT; path=/; domain=.google.co.th Content-Encoding: gzip Server: GWS/2.1 Content-Length: 1892 Date: Sun,22 Apr 2007 08:88:12 GMT

  6. รู้จักกับ HTTP Header

  7. การส่งข้อมูลเฮดเดอร์ไปเองตามที่ต้องการการส่งข้อมูลเฮดเดอร์ไปเองตามที่ต้องการ ฟังก์ชั่น header จะส่งข้อมูลเฮดเดอร์ที่ระบุไปให้เว็บบราวเซอร์ รูปแบบของข้อมูลเฮดเดอร์จะต้องเป็นไปตามข้อกำหนดของโปรโตคอล HTTP ซึ่งมีรายละเอียดอยู่ที่ http://www.faqs.org/rfcs/rfc2616 ตัวอย่างการใช้ฟังก์ชั่น header header('WWW-Authenticate: Negotiate'); รูปแบบ void header(string ข้อมูลเฮดเดอร์)

  8. กำหนดคุกกี้โดยใช้ฟังก์ชั่น header การใช้ฟังก์ชั่น header ที่มีประโยชน์จริงๆ อย่างหนึ่งก็คือการส่งคุกกี้ไปเก็บไว้ในเครื่องผู้ใช้ คุณทราบแล้วว่าข้อมูลคุกกี้จะถูกส่งไปทาง HTTP Header โดยฟังก์ชั่น setcookieจะสร้างข้อมูลเฮดเดอร์ส่วนนี้ให้เรา แต่ถ้าคุณต้องการกำหนดคุกกี้ลงใน HTTP Header เองก็สามารถทำได้ เฮดเดอร์ที่ใช้กำหนดคุกกี้ลงในเครื่องผู้ใช้จะมีชื่อว่า Set-Cookie ตัวอย่างนี้คือการกำหนดคุกกี้ชื่อ username ให้มีค่าเท่ากับ nooknetโดยใช้ฟังก์ชั่น header header("Set_Cookie: username=sanya"); ซึ่งเทียบเท่าการใช้ฟังก์ชั่น setcookieดังนี้ setcookie("username",“sanya");

  9. กำหนดคุกกี้โดยใช้ฟังก์ชั่น header การเปลี่ยนทิศทาง (Redirect) เว็บบราวเซอร์ header("Location: เพจปลายทาง"); เช่น header("Location: http://www.somedomain.com/somepage.php");

  10. กำหนดคุกกี้โดยใช้ฟังก์ชั่น header ตัวอย่างนี้จะแสดงการเปลี่ยนทิศทางเว็บบราวเซอร์ โดยเมื่อผู้ใช้เรียกมายังเพจ redirect1.php เว็บบราวเซอร์จะถูกสั่งให้ไปโหลดเพจ redirect2.php มาแสดงแทน redirect1.php redirect2.php <? echo "ข้อความจากเพจ redirect2.php"; ?> <? header("Location: http://localhost/test/redirect2.php"); echo "ข้อความจากเพจ redirect1.php"; ?>

  11. กำหนดคุกกี้โดยใช้ฟังก์ชั่น header การทดสอบตัวอย่างนี้ให้เรียกไปยังเพจ redirect1.php จะได้ว่าเพจ redirect2.php ถูกแสดงออกมาแทน ดังรูป

  12. การตรวจสอบว่าข้อมูลเฮดเดอร์ถูกส่งไปหรือยังการตรวจสอบว่าข้อมูลเฮดเดอร์ถูกส่งไปหรือยัง error.php <? echo "ทดสอบการเปลี่ยนทิศทาง<br>"; header("Location: http://www.iamsanya.com"); ?>

  13. การแสดงข้อมูลเฮดเดอร์ออกมาการแสดงข้อมูลเฮดเดอร์ออกมา headers_list.php รูปแบบ array headers_list(void) <? header("X-PHP-Author:PromlertLovichit"); echo "<pre>"; print_r(headers_list()); echo "</pre>"; ?>

  14. การตั้งค่าเกี่ยวกับแคชการตั้งค่าเกี่ยวกับแคช เราสามารถใช้ข้อมูลเฮดเดอร์ตั้งค่าเกี่ยวกับแคช (Cache) ให้กับเพจต่างๆ ได้ด้วย เพื่อกำหนดว่า ต้องโหลดเพจจากเว็บเซิร์ฟเวอร์ทุกครั้งที่ผู้ใช้รีเฟรชเพจ หรือให้เว็บบราวเซอร์หรือเครื่องของผู้ให้บริการอินเทอร์เน็ต (Internet Service Provider – ISP) เก็บสำเนาของเพจไว้ได้ภายในระยะเวลาหนึ่ง ซึ่งจะทำให้การรีเฟรชเพจรวดเร็วขึ้น เพราะไม่ต้องมาดหลดเอาจากเว็บเซิร์ฟเวอร์ทุกครั้ง

  15. การตั้งค่าเกี่ยวกับแคชการตั้งค่าเกี่ยวกับแคช เฮดเดอร์ที่ใช้กำหนดค่าเกี่ยวกับแคชก็คือ Cache-Control ค่าหลักๆ ที่กำหนดได้ คือ

  16. การตั้งค่าเกี่ยวกับแคชการตั้งค่าเกี่ยวกับแคช สำหรับ PHP page แล้ว โดยทั่วไป เว็บเซิร์ฟเวอร์จะกำหนดค่าเกี่ยวกับแคชเพื่อให้เพจถูกอัพเดทบ่อยที่สุด แต่อาจไม่ใช่ทุกครั้งที่ผู้ใช้รีเฟรชเพจ ดังนั้นหากคุณต้องการให้ผู้ใช้เห็นเนื้อหาของเพจที่อัพเดทล่าสุดเสมอ ก็ให้กำหนดค่าเกี่ยวกับแคชเองดังนี้ header("Cache-Control: no-store,no-cahe,must-revalidate"); header("Cache-Control: post-check=0,pre-check=0",false); header("Expires: Mon,18 Oct 2011 14:18:00 GMT"); header("Last-Modified: " . gmdate("D,d M Y H:i:s") . " GMT");

  17. การใช้งานตัวแปร $_SERVER ในช่วงที่เว็บบราวเซอร์เรียกมายัง PHP page หนึ่งๆ PHP จะรวบรวมค่าต่างๆเกี่ยวกับเว็บเซิร์ฟเวอร์และเพจนั้นเก็บไว้ในตัวแปร $_SERVER ให้เราอ่านมาใช้งานได้ ตัวแปรนี้เป็นอาร์เรย์แบบ Superglobalจึงเรียกใช้ได้จากทุกที่ในโค้ดโปรแกรม ก่อนหน้านี้คุณเคยใช้งานตัวแปรอาร์เรย์ $_SERVER มาบ้างแล้ว ได้แก่การเรียกใช้ค่าของสมาชิกในอาร์เรย์ที่มีคีย์เท่ากับ “PHP_SELF” เพื่อหาชื่อไฟล์ของเพจปัจจุบัน ถ้าคุณอยากรู้ว่ามีค่าอะไรเก็บอยู่ในตัวแปรอาร์เรย์นี้บ้าง ก็ให้ใช้ฟังก์ชั่น print_rแสดงค่าของตัวแปรออกมา

  18. ความหมายของค่าในตัวแปร $_SERVER ที่ใช้บ่อย • ค่าที่ให้ข้อมูลเกี่ยวกับเพจ - PHP_SELF และ SCRIPT_NAME ชื่อไฟล์ของเพจปัจจุบันเทียบเท่ากับตำแหน่งของ DocumentRoot เช่น /board/login.php - REQUEST_URI URI (Uniform Resource Identifier) ที่เว็บบราวเซอร์ใช้ในการร้องขอเพจปัจจุบัน หรือพูดง่ายๆคือชื่อไฟล์ของเพจปัจจุบัน รวมทั้ง Query String ที่พ่วงท้ายมาด้วย เช่น /board/login.phpMuserid=sanya

  19. ความหมายของค่าในตัวแปร $_SERVER ที่ใช้บ่อย • ค่าที่ให้ข้อมูลเกี่ยวกับผู้ใช้ - REMOTE_ADDR หมายเลข IP(IP Address) ของเครื่องผู้ใช้ เช่น 127.0.0.1 - HTTP_USER_AGENT ชื่อโปรแกรมเว็บบราวเซอร์และระบบปฏิบัติการในเครื่องผู้ใช้ เช่น Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)

  20. ความหมายของค่าในตัวแปร $_SERVER ที่ใช้บ่อย ตัวอย่างนี้แสดงการตรวจสอบโปรแกรมเว็บบราวเซอร์ในเครื่องผู้ใช้ว่าเป็นตัวใดระหว่าง Internet Explorer , Mozilla Firefox หรืออื่นๆ detect_browser.php <? if(strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")) echo "คุณใช้ Internet Explorer"; elseif(strstr($_SERVER["HTTP_USER_AGENT"],"Firefox")) echo "คุณใช้ Mozilla Firefox"; else echo "คุณใช้เว็บบราวเซอร์อื่นที่ไม่ใช่ IE และ Firefox"; ?>

  21. ค่าที่ให้ข้อมูลเกี่ยวกับเว็บเซิร์ฟเวอร์(ตัวอย่าง)ค่าที่ให้ข้อมูลเกี่ยวกับเว็บเซิร์ฟเวอร์(ตัวอย่าง) • SERVER_NAME ชื่อเครื่องเซิร์ฟเวอร์ เช่น localhost • SERVER_SOFTWAREชื่อโปรแกรมเว็บเซิร์ฟเวอร์ที่ใช้ในเครื่องเซิร์ฟเวอร์ เช่น Apache/2.0.59 (Win32) PHP/5.1.6 • SERVER_ADDR หมายเลข IP ของเครื่องเซิร์ฟเวอร์ • SERVER_PORTหมายเลขพอร์ต (port) ที่เครื่องเซิร์ฟเวอร์ใช้เป็นช่องทางในการสื่อสารกับเว็บบราวเซอร์ โดยปกติคือหมายเลข 80 • REQUEST_METHOD วิธีหรือเมธอดที่เว็บบราวเซอร์ใช้ในการเรียกมายังเพจปัจจุบัน ซึ่งโดยทั่วไปจะมีค่าเป็น GET หรือ POST

  22. ตัวอย่าง <? echo $_SERVER["HTTP_USER_AGENT"]."<br>"; echo $_SERVER["SERVER_NAME"]."<br>"; echo $_SERVER["SERVER_ADDR"]."<br>"; echo $_SERVER["REQUEST_URI"]."<br>"; echo $_SERVER["REQUEST_METHOD"]; echo $_SERVER["REMOTE_ADDR"]; ?>

  23. ความหมายของค่าในตัวแปร $_SERVER ที่ใช้บ่อย • ค่าที่ให้ข้อมูลเกี่ยวกับเว็บเซิร์ฟเวอร์ - SERVER_NAME ชื่อเครื่องเซิร์ฟเวอร์ เช่น localhost - SERVER_SOFTWARE ชื่อโปรแกรมเว็บเซิร์ฟเวอร์ที่ใช้ในเครื่องเซิร์ฟเวอร์ เช่น Apache/2.0.59 (Win32) PHP/5.1.6 - SERVER_ADDR หมายเลข IP ของเครื่องเซิร์ฟเวอร์ - SERVER_PORT หมายเลขพอร์ต (port) ที่เครื่องเซิร์ฟเวอร์ใช้เป็นช่องทางในการสื่อสารกับเว็บบราวเซอร์ โดยปกติคือหมายเลข 80 - REQUEST_METHOD วิธีหรือเมธอดที่เว็บบราวเซอร์ใช้ในการเรียกมายังเพจปัจจุบัน ซึ่งโดยทั่วไปจะมีค่าเป็น GET หรือ POST

  24. สรุป • HTTP Header คือข้อมูลส่วนหัวของโปรโตคอล HTTP ซึ่งในการส่ง request/response ระหว่างเว็บบราวเซอร์กับเว็บเซิร์ฟเวอร์ ทุกครั้งจะมีการส่งข้อมูลเฮดเดอร์นี้ไปก่อนเสมอ แล้วจึงตามด้วยเนื้อหาหลักๆ ของ request หรือ response ในครั้งนั้น เช่นคุกกี้ที่เว้บเซิร์ฟเวอร์ส่งไปเก็บไว้ในเครื่องผู้ใช้ หรือคุกกี้ที่เว็บบราวเซอร์ส่งกลับไปให้เว็บเซิร์ฟเวอร์ ก็จะรวมอยู่ในส่วนของข้อมูลเฮดเดอร์นี่เอง • เมื่อต้องการส่งข้อมูลเฮดเดอร์ไปให้เว็บบราวเซอร์เอง ให้ใช้ฟังก์ชั่น header • การเปลี่ยนทิศทาง (redirect) เว็บบราวเซอร์ ให้กำหนดเฮดเดอร์ Location เป็น URL ของ เพจปลายทางที่ต้องการ • การตั้งค่าเกี่ยวกับแคชของเพจ ให้กำหนดเฮดเดอร์ Cache-Control • ฟังก์ชั่น header_sentใช้ตรวจสอบว่าขณะนั้นข้อมูลเฮดเดอร์ถูกส่งไปยังเว็บบราวเซอร์หรือยัง เพราะถ้าส่งไปแล้วจะส่งข้อมูลเฮดเดอร์อื่นๆไม่ได้อีก • ฟังก์ชั่น header_listใช้แสดงข้อมูลเฮดเดอร์ที่กำลังจะส่งหรือส่งไปยังเว็บบราวเซอร์แล้วออกมา • เมื่อผู้ใช้เรียกมายังเพจในเว็บเซิร์ฟเวอร์ของเรา PHP จะรวบรวมค่าต่างๆ เกี่ยวกับเครื่องของผู้ใช้ เว็บเซิร์ฟเวอร์ และเพจที่ถูกเรียก เก็บไว้ในตัวแปรอาร์เรย์ ชื่อ $_SERVER ซึ่งเราสามารถอ่านค่ามาใช้ใน PHP page ได้

  25. Thank You

More Related