Upload
percy
View
33
Download
0
Embed Size (px)
DESCRIPTION
บทที่ 23 (Webserver Management). PHP: Hypertext Preprocessor. สัญญา เครือหงษ์ ภาควิชาวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร. วัตถุประสงค์การเรียนรู้ประจำบท. - PowerPoint PPT Presentation
Citation preview
1
PHP:Hypertext Preprocessor
สญญา เครอหงษภาควชาวทยาการคอมพวเตอรและเทคโนโลยสารสนเทศคณะวทยาศาสตร มหาวทยาลยนเรศวร
บทท 23(Webserver Management)
2
วตถประสงคการเรยนรประจำาบท• ในบทน จะไดเรยนรวธการตดตอกบเวบเซรฟเวอร เชนการกำาหนดขอมลเฮดเดอร (HTTP Header) ทเวบเซรฟเวอรจะสงไปยงเวบบราวเซอรหลงจากมการรองขอเพจหนงๆ มา และการใชงานตวแปร $_SERVER เพอหาขอมลบางอยางเกยวกบตวเซรฟเวอรและเพจทกำาลงถกประมวลผล
3
กจกรรมการเรยนการสอน•บรรยายโดยผสอนและใชเอกสารประกอบการสอนของผสอน
•สอนโดยใชสอคอมพวเตอรผานเครองฉาย•อภปรายในชนเรยนรวมกน• ใหนสตคนควาเพมเตมจากตำาราและเอกสารทเกยวของ
•ทำาแบบฝกหดทายบท
4
การประเมนผล•ประเมนผลจากการตอบคำาถามและอภปรายในชนเรยน
•ทำาแบบฝกหดทายบท•ทำารายงานสง
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
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
<? header("Location: http://localhost/test/redirect2.php");echo "ขอความจากเพจ redirect1.php";?>
<?echo "ขอความจากเพจ redirect2.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:Promlert Lovichit");echo "<pre>";print_r(headers_list());echo "</pre>";?>
14
การตงคาเกยวกบแคช เราสามารถใชขอมลเฮดเดอรตงคาเกยวกบแคช (Cache) ใหกบเพจตางๆ ไดดวย เพอกำาหนดวา ตองโหลดเพจจากเวบเซรฟเวอรทกครงทผใชรเฟรชเพจ หรอใหเวบบราวเซอรหรอเครองของผใหบรการอนเทอรเนต (Internet Service Provider – ISP) เกบสำาเนาของเพจไวไดภายในระยะเวลาหนง ซงจะทำาใหการรเฟรชเพจรวดเรวขน เพราะไมตองมาดหลดเอาจากเวบเซรฟเวอรทกครง
15
การตงคาเกยวกบแคชเฮดเดอรทใชกำาหนดคาเกยวกบแคชกคอ Cache-Control คาหลกๆ ทกำาหนดได คอ
คา คำาอธบายpublic ใหเกบสำาเนาของเพจไวในเวบแคชไดprivate ใหเกบสำาเนาของเพจไวในแคชของเวบบราวเซอรได แต
ไมใหเกบในแคชของเครองผใหบรการno-cache ไมใหเกบสำาเนาของเพจไวในเวบแคช คอตองโหลดจาก
เวบเซรฟเวอรทกครง
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 ชอไฟลของเพจปจจบนเทยบเทากบตำาแหนงของ Document Root เชน /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";elseecho "คณใชเวบบราวเซอรอนทไมใช 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