25
PHP: Hypertext Preprocessor สสสสส สสสสสสสสส สสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสสส สสสสสสสสสสสสสส สสสสสสสสสสสสสสสสส สสสสส 23 (Webserver Management) 1

PHP: Hypertext Preprocessor

  • Upload
    percy

  • View
    33

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: PHP: Hypertext  Preprocessor

1

PHP:Hypertext Preprocessor

สญญา เครอหงษภาควชาวทยาการคอมพวเตอรและเทคโนโลยสารสนเทศคณะวทยาศาสตร มหาวทยาลยนเรศวร

บทท 23(Webserver Management)

Page 2: PHP: Hypertext  Preprocessor

2

วตถประสงคการเรยนรประจำาบท• ในบทน จะไดเรยนรวธการตดตอกบเวบเซรฟเวอร เชนการกำาหนดขอมลเฮดเดอร (HTTP Header) ทเวบเซรฟเวอรจะสงไปยงเวบบราวเซอรหลงจากมการรองขอเพจหนงๆ มา และการใชงานตวแปร $_SERVER เพอหาขอมลบางอยางเกยวกบตวเซรฟเวอรและเพจทกำาลงถกประมวลผล

Page 3: PHP: Hypertext  Preprocessor

3

กจกรรมการเรยนการสอน•บรรยายโดยผสอนและใชเอกสารประกอบการสอนของผสอน

•สอนโดยใชสอคอมพวเตอรผานเครองฉาย•อภปรายในชนเรยนรวมกน• ใหนสตคนควาเพมเตมจากตำาราและเอกสารทเกยวของ

•ทำาแบบฝกหดทายบท

Page 4: PHP: Hypertext  Preprocessor

4

การประเมนผล•ประเมนผลจากการตอบคำาถามและอภปรายในชนเรยน

•ทำาแบบฝกหดทายบท•ทำารายงานสง

Page 5: PHP: Hypertext  Preprocessor

5

รจกกบ HTTP Headerตวอยางของขอมลเฮดเดอรทเวบเซรฟเวอรสงมาใหเวบบราวเซอรพรอมๆกบเนอหาของเพจทเวบบราวเซอรรองขอไป (ในทนไมไดแสดงเนอหาของเพจ ซงจะอยตอจากขอมลนอกท)

HTTP/1.1 200 OKCache-Control: privateContent-Type:text/html; charset_UTF-8Set-Cookie: PREF=ID=3012de85f31fa84c:TM=1132109741:LM=1132109741:

S=RykkDzZuyvT0VW-N; expires=Sun,17-jan-2038 19:14:07 GMT;

path=/; domain=.google.co.thContent-Encoding: gzipServer: GWS/2.1Content-Length: 1892Date: Sun,22 Apr 2007 08:88:12 GMT

Page 6: PHP: Hypertext  Preprocessor

6

รจกกบ HTTP Header

Page 7: PHP: Hypertext  Preprocessor

7

การสงขอมลเฮดเดอรไปเองตามทตองการ

ฟงกชน header จะสงขอมลเฮดเดอรทระบไปใหเวบบราวเซอร รปแบบของขอมลเฮดเดอรจะตองเปนไปตามขอกำาหนดของโปรโตคอล HTTP ซงมรายละเอยดอยท http://www.faqs.org/rfcs/rfc2616

ตวอยางการใชฟงกชน header header('WWW-Authenticate: Negotiate');

รปแบบvoid header(string ขอมลเฮดเดอร)

Page 8: PHP: Hypertext  Preprocessor

8

กำาหนดคกกโดยใชฟงกชนheader

การใชฟงกชน header ทมประโยชนจรงๆ อยางหนงกคอการสงคกกไปเกบไวในเครองผใช คณทราบแลววาขอมลคกกจะถกสงไปทาง HTTP Header โดยฟงกชน setcookie จะสรางขอมลเฮดเดอรสวนนใหเรา แตถาคณตองการกำาหนดคกกลงใน HTTP Header เองกสามารถทำาได เฮดเดอรทใชกำาหนดคกกลงในเครองผใชจะมชอวา Set-Cookie ตวอยางนคอการกำาหนดคกกชอ username ใหมคาเทากบ nooknet โดยใชฟงกชน header

header("Set_Cookie: username=sanya");ซงเทยบเทาการใชฟงกชน setcookie ดงนsetcookie("username",“sanya");

Page 9: PHP: Hypertext  Preprocessor

9

กำาหนดคกกโดยใชฟงกชนheader

การเปลยนทศทาง (Redirect) เวบบราวเซอร

header("Location: เพจปลายทาง");เชน

header("Location: http://www.somedomain.com/somepage.php");

Page 10: PHP: Hypertext  Preprocessor

10

กำาหนดคกกโดยใชฟงกชนheader

ตวอยางนจะแสดงการเปลยนทศทางเวบบราวเซอร โดยเมอผใชเรยกมายงเพจ redirect1.php เวบบราวเซอรจะถกสงใหไปโหลดเพจ redirect2.php มาแสดงแทน

redirect1.php redirect2.php

<? header("Location: http://localhost/test/redirect2.php");echo "ขอความจากเพจ redirect1.php";?>

<?echo "ขอความจากเพจ redirect2.php";?>

Page 11: PHP: Hypertext  Preprocessor

11

กำาหนดคกกโดยใชฟงกชนheader

การทดสอบตวอยางนใหเรยกไปยงเพจ redirect1.php จะไดวาเพจ redirect2.php ถกแสดงออกมาแทน ดงรป

Page 12: PHP: Hypertext  Preprocessor

12

การตรวจสอบวาขอมลเฮดเดอรถกสงไปหรอยง

error.php

<? echo "ทดสอบการเปลยนทศทาง<br>";header("Location: http://www.iamsanya.com");?>

Page 13: PHP: Hypertext  Preprocessor

13

การแสดงขอมลเฮดเดอรออกมา

headers_list.php

รปแบบarray headers_list(void)

<? header("X-PHP-Author:Promlert Lovichit");echo "<pre>";print_r(headers_list());echo "</pre>";?>

Page 14: PHP: Hypertext  Preprocessor

14

การตงคาเกยวกบแคช เราสามารถใชขอมลเฮดเดอรตงคาเกยวกบแคช (Cache) ใหกบเพจตางๆ ไดดวย เพอกำาหนดวา ตองโหลดเพจจากเวบเซรฟเวอรทกครงทผใชรเฟรชเพจ หรอใหเวบบราวเซอรหรอเครองของผใหบรการอนเทอรเนต (Internet Service Provider – ISP) เกบสำาเนาของเพจไวไดภายในระยะเวลาหนง ซงจะทำาใหการรเฟรชเพจรวดเรวขน เพราะไมตองมาดหลดเอาจากเวบเซรฟเวอรทกครง

Page 15: PHP: Hypertext  Preprocessor

15

การตงคาเกยวกบแคชเฮดเดอรทใชกำาหนดคาเกยวกบแคชกคอ Cache-Control คาหลกๆ ทกำาหนดได คอ

คา คำาอธบายpublic ใหเกบสำาเนาของเพจไวในเวบแคชไดprivate ใหเกบสำาเนาของเพจไวในแคชของเวบบราวเซอรได แต

ไมใหเกบในแคชของเครองผใหบรการno-cache ไมใหเกบสำาเนาของเพจไวในเวบแคช คอตองโหลดจาก

เวบเซรฟเวอรทกครง

Page 16: PHP: Hypertext  Preprocessor

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

Page 17: PHP: Hypertext  Preprocessor

17

การใชงานตวแปร $_SERVER ในชวงทเวบบราวเซอรเรยกมายง PHP page หนงๆ PHP จะรวบรวมคาตางๆเกยวกบเวบเซรฟเวอรและเพจนนเกบไวในตวแปร $_SERVER ใหเราอานมาใชงานได ตวแปรนเปนอารเรยแบบ Superglobal จงเรยกใชไดจากทกทในโคดโปรแกรม กอนหนานคณเคยใชงานตวแปรอารเรย $_SERVER มาบางแลว ไดแกการเรยกใชคาของสมาชกในอารเรยทมคยเทากบ “PHP_SELF” เพอหาชอไฟลของเพจปจจบน ถาคณอยากรวามคาอะไรเกบอยในตวแปรอารเรยนบาง กใหใชฟงกชน print_r แสดงคาของตวแปรออกมา

Page 18: PHP: Hypertext  Preprocessor

18

ความหมายของคาในตวแปร $_SERVER ทใชบอย

• คาทใหขอมลเกยวกบเพจ - PHP_SELF และ SCRIPT_NAME ชอไฟลของเพจปจจบนเทยบเทากบตำาแหนงของ Document Root เชน /board/login.php - REQUEST_URI URI (Uniform Resource Identifier) ทเวบบราวเซอรใชในการรองขอเพจปจจบน หรอพดงายๆคอชอไฟลของเพจปจจบน รวมทง Query String ทพวงทายมาดวย เชน /board/login.phpMuserid=sanya

Page 19: PHP: Hypertext  Preprocessor

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)

Page 20: PHP: Hypertext  Preprocessor

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";elseecho "คณใชเวบบราวเซอรอนทไมใช IE และ Firefox";?>

Page 21: PHP: Hypertext  Preprocessor

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

Page 22: PHP: Hypertext  Preprocessor

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

Page 23: PHP: Hypertext  Preprocessor

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

Page 24: PHP: Hypertext  Preprocessor

24

สรป• HTTP Header คอขอมลสวนหวของโปรโตคอล HTTP ซงในการสง request/response

ระหวางเวบบราวเซอรกบเวบเซรฟเวอร ทกครงจะมการสงขอมลเฮดเดอรนไปกอนเสมอ แลวจงตามดวยเนอหาหลกๆ ของ request หรอ response ในครงนน เชนคกกทเวบเซรฟเวอรสงไปเกบไวในเครองผใช หรอคกกทเวบบราวเซอรสงกลบไปใหเวบเซรฟเวอร กจะรวมอยในสวนของขอมลเฮดเดอรนเอง

• เมอตองการสงขอมลเฮดเดอรไปใหเวบบราวเซอรเอง ใหใชฟงกชน header• การเปลยนทศทาง (redirect) เวบบราวเซอร ใหกำาหนดเฮดเดอร Location เปน URL ของ เพจ

ปลายทางทตองการ• การตงคาเกยวกบแคชของเพจ ใหกำาหนดเฮดเดอร Cache-Control• ฟงกชน header_sent ใชตรวจสอบวาขณะนนขอมลเฮดเดอรถกสงไปยงเวบบราวเซอรหรอยง

เพราะถาสงไปแลวจะสงขอมลเฮดเดอรอนๆไมไดอก• ฟงกชน header_list ใชแสดงขอมลเฮดเดอรทกำาลงจะสงหรอสงไปยงเวบบราวเซอรแลวออกมา• เมอผใชเรยกมายงเพจในเวบเซรฟเวอรของเรา PHP จะรวบรวมคาตางๆ เกยวกบเครองของผใช

เวบเซรฟเวอร และเพจทถกเรยก เกบไวในตวแปรอารเรย ชอ $_SERVER ซงเราสามารถอานคามาใชใน PHP page ได

Page 25: PHP: Hypertext  Preprocessor

25

Thank You