เทคนิค Re-direct โดย META tags และ Haeader
หน้าแรก PHP MySQL เกร็ดความรู้ เทคนิค Re-direct โดย META tags และ Haeader
ทุกครั้งที่เรามีการแก้ไขหรือเปลี่ยนแปลงที่อยู่ของโฮมเพจ สิ่งหนึ่งที่เราต้องทำก็คือแจ้งให้ผู้อ่านที่เปิดเข้ามายังเว็บเพจเดิม ทราบว่ามีการเปลี่ยนแปลงที่อยู่เกิดขึ้น เพื่อให้ทำการแก้ไข bookmark ไปยังที่อยู่ใหม่ ผมคิดว่าหลายๆ ท่านคงเคยเจอมาแล้ว ซึ่งมักจะเป็นข้อความทำนองนี้คือ เราได้ทำการย้ายที่อยู่ของเว็บเพจใหม่ อีกสักครู่ท่านจะถูกนำไปที่อยู่ใหม่โดยอัตโนมัติ วิธีการนี้เรียกว่า การ Re-direct สงสัยไหมครับว่าเขาทำยังไง?
วิธีการหนึ่งที่นิยมใช้ในการทำ Re-direct คือใช้ META tags ครับ รูปแบบโดยทั่วไปของ META tags มีอยู่ 2 แบบ คือ
รูปแบบที่ 1: <META HTTP-EQUIV=name CONTENT=content>
รูปแบบที่ 2: <META NAME=name CONTENT=content>
META tags นี้จะต้องอยู่ภายใน Head tag อีกที คือต้องอยู่ระหว่าง <HEAD> และ </HEAD> tag ครับ ถ้าสังเกตดูจะเห็นว่ารูปแบบทั้งสองแตกต่างกันที่แอตทริบิว HTTP-EQUIV และ NAME ซึ่งผมจะอธิบายต่อไปในภายหลัง
META tags มีไว้ใช้ทำอะไร?
META tags เป็น tags ที่เราใช้เพื่อใส่ตัวข้อมูล metadata เอาละสิครับแล้วเจ้า metadata คืออะไร? Metadata ก็คือ คำอธิบายข้อมูล หรือข้อมูลที่บอกรายละเอียดของข้อมูล (data about data) เพื่อให้เราทราบว่าข้อมูลที่เราได้รับนั้นมันคืออะไร
นอกจากทำให้เราเข้าใจแล้ว metadata ก็เป็นสิ่งที่ช่วยทำให้เครื่องคอมพิวเตอร์สามารถเข้าใจถึงข้อมูลที่มันได้รับด้วยเช่นกัน ตัวอย่างของ metadata ที่เราเห็นในชีวิตประจำวันก็คือ ป้ายหรือฉลากที่ติดอยู่บนภาชนะบรรจุอาหาร เครื่องดื่ม หรือสิ่งของต่างๆ เพื่อที่จะอธิบายข้อมูลว่าแต่ละรายการคืออะไร เพียงแค่เราอ่านฉลากก็ทำให้เราทราบถึงคุณลักษณะของสิ่งที่บรรจุอยู่ภายใน
metadata ไม่ได้ถูกคิดค้นมาเพื่อใช้งานกับเว็บเพจ เพราะแรกเริ่มเดิมทีนั้น metadata ได้ถูกใช้ในกลุ่มพัฒนาฐานข้อมูลที่อ้างอิงถึงสารสนเทศในห้องสมุดเพื่อให้บรรณารักษ์ได้ใช้ในการจัดการระบบห้องสมุด ซึ่งถ้าหากจะว่าไปแล้วเราก็อาจเปรียบเทียบได้ว่า เว็บเพจต่างๆ นั้นเปรียบเสมือนห้องสมุดโลกขนาดใหญ่ ด้วยเหตุผลนี้เองจึงได้มีแนวความคิดในการนำ metadata มาประยุกต์ใช้กับเว็บเพจต่างๆ
ถ้าเราลองพิจารณาดูเว็บเพจต่างๆ ในโลกจะเห็นว่ามีจำนวนมากมายมหาศาล นอกจากนี้แล้วยังมีการเปลี่ยนแปลงอยู่ตลอดเวลาตามใจของผู้ที่เป็นเจ้าของ ดังนั้นสามารถเรียกได้ว่าเครือข่าย world wide web ไม่มีโครงสร้างของข้อมูลข่าวสารแต่อย่างใด ซึ่งแตกต่างกับระบบของห้องสมุดที่มีการจัดระบบสิ่งพิมพ์ประเภทต่างๆ ไว้ให้เป็นหมวดหมู่เดียวกันในระบบที่เป็นมาตรฐานเดียวกันทั่วโลก คือ ระบบ Library of Congress Classification (LC) หรือ ระบบ Dewey Decimal System จะเห็นว่าเมื่อมีระบบจัดเก็บที่เป็นหมวดหมู่ก็จะสามารถทำให้ทำการสืบค้นได้อย่างสะดวกรวดเร็ว
META tags สามารถใช้ในการอธิบายว่าเว็บเพจนั้นเป็นอย่างไร มีเนื้อหาเกี่ยวข้องกับอะไร และอื่นๆ เพี่อความง่ายและรวดเร็วต่อการสืบค้นข้อมูลต่างๆ ในอินเทอร์เน็ต เช่น
<HEAD>
<TITLE>PHPConcept.com</TITLE>
<META HTTP-EQUIV=Content-Type CONTENT=text/html; charset=tis-620″>
<META NAME=keywords CONTENT=PHP>
<META NAME=description CONTENT=homepage about PHP Scripting language.>
<META NAME=author CONTENT=Wachira Promsaka Na Sakolnakorn>
</HEAD>
จากตัวอย่างข้างต้นจะเห็นว่า แอตทริบิว NAME จะเป็นตัวที่บอกว่าเราต้องการกำหนดค่าให้กับอะไร และแอตทริบิว CONTENT นั้นเป็นค่าที่เราต้องการกำหนดให้นั่นเอง ส่วนแอตทริบิว HTTP-EQUIV นั้นเป็นการกำหนดค่าที่เทียบเท่า (equivalent) กับค่าของ HTTP headers ซึ่งโดยปกติแล้วเว็บเซิร์ฟเวอร์จะเป็นผู้ส่ง HTTP Response headers ให้แก่บราวเซอร์
จากการใช้ META tags นี้ก็จะทำให้บราวเซอร์ได้รับค่าที่เทียบเท่า HTTP headers ที่เรากำหนดขึ้นเองด้วย ซึ่งโดยทั่วไปแล้วบราวเซอร์ก็จะปฏิบัติตาม HTTP headers ที่มันได้รับ เช่น
<META HTTP-EQUIV=expires CONTENT=Wed, 26 Feb 1997 08:21:57 GMT>
เทียบเท่ากับ HTTP header คือ
Expires: Wed, 26 Feb 1997 08:21:57 GMT
ความหมายก็คือ กำหนดให้เว็บเพจนี้หมดอายุเมื่อวันพุธที่ 26 กุมภาพันธ์ 2546 เวลา 08:21:57 GMT
ถ้าอยากลองดูว่าทันทีที่เราเปิดดูเว็บไซต์อะไรสักอย่าง มีการส่ง HTTP Request Header ของบราวเซอร์ และรับข้อมูล HTTP Response header จากเซิร์ฟเวอร์ยังไงบ้าง ให้ลองดูที่เว็บนี้ครับ http://web-sniffer.net/ หรือเว็บนี้ครับ http://www.rexswain.com/httpview.html
เมื่อเราเรียดดูเว็บเพจที่มี META tags
เมื่อเราเรียกดูเว็บเพจผ่านทางเว็บบราวเซอร์ข้อมูลต่างๆ ของ META tags จะไม่ปรากฎให้เราเห็นบนจอ นอกเสียจากว่าเราจะเปิดดูซอร์สโค้ดของเว็บเพจนั้นๆ แล้วใครบ้างจะเป็นคนเห็นและใช้ข้อมูลต่างๆ เหล่านี้? ผู้ใช้ข้อมูลของ META tags ก็คือ search engine และตัวบราวเซอร์นั่นเอง ซึ่ง search engine บางตัวก็จะใช้ข้อมูลของ metadata ในการทำดัชนีเว็บไซต์ ดังนั้นการเลือกใช้คีย์เวิร์ดที่ถูกต้องเหมาะสมก็ส่งผลต่อการที่เว็บไซต์ของเราจะถูกพบโดย search engineได้ง่ายขึ้น
เคล็ดลับหนึ่งในการสร้างคีย์เวิร์ดเพื่อใช้ใน META tags ก็คือ ทำตัวเองให้เหมือนกับเป็นคนที่กำลังค้นหาเว็บไซต์ที่เกี่ยวของกับเว็บไซต์ของเรา ลองนึกดูว่าเขาจะใช้อะไรเป็นคีย์เวิร์ดในการค้นหาบ้าง คุณอาจจะลองถามเพื่อนๆ ดูก็ได้ หรืออีกวิธีหนึ่งก็ดูจากซอร์สโค้ดของเว็บไซต์ที่ใกล้เคียงกับเรา จากนั้นก็ค่อยเลือกใช้คีย์เวิร์ดที่ตรงตามความต้องการของเราจริงๆ อีกที
การ Re-direct โดยใช้ META tags
ในการ re-direct เว็บเพจโดยใช้ META tags นั้น เราต้องการกำหนดให้แอตทริบิว HTTP-EQUIV ให้มีค่าเท่ากับ Refresh โดยมีรูปแบบของคำสั่งดังนี้
<META HTTP-EQUIV=Refresh CONTENT=3;URL=http://www.some.org/some.html>
เทียบเท่ากับ HTTP header คือ
Refresh: 3;URL=http://www.some.org/some.html
ความหมายก็คือ เป็นการกำหนดให้ทำการเปิดเว็บเพจที่มี URL http://www.some.org/some.html ภายใน 3 วินาทีหลังจากที่แสดงเว็บเพจปัจจุบันเสร็จเรียบร้อยแล้ว เราสามารถกำหนดให้บราวเซอร์ทำการเปิดเว็บเพจใหม่ได้ทันทีโดยการกำหนดให้เป็นตัวเลขวินาทีเป็น 0 ตัวอย่างข้างล่างนี้คือตัวอย่างที่ใช้งานได้จริง
<html>
<head>
<meta http-equiv=content-type content=text/html;charset=tis-620 />
<meta http-equiv=refresh content=0;url=http://www.phpconcept.com/newpage/ />
<title>Refresh Page</title>
</head>
<body>
<p>This page has moved to</p>
<p><a href=http://www.phpconcept.com/newpage/ mce_href=http://www.phpconcept.com/newpage/>
http://www.phpconcept.com/newpage/</a>
If you are not re-directed to the page automatically, please use the link above.</p>
</body>
</html>
การ Re-direct โดยใช้ PHP
ใน PHP มีคำสั่งที่ใช้ในการส่ง HTTP header คือ คำสั่ง header มีรูปแบบคือ
void header ( string string [, bool replace [, int http_response_code]])
การ Re-direct โดยใช้ PHP สามารถทำได้ 2 แบบคือ
1. ทำการ Re-direct ไปยังเว็บไซต์ใหม่ทันทีโดยใช้ location header มีรูปแบบคือ
<?
header(location:http://www.phpconcept.com/newpage/);
exit;
?>
2. ทำการ Re-direct ทันทีโดยใช้ refresh header มีรูปแบบคือ
ตัวอย่างนี้แสดงให้เห็นว่าเราสามารถทำการ Re-direct ไปยังเว็บเพจใหม่ได้โดยการกำหนดให้เวลามีค่าเป็น 0 วินาที
<?
header( refresh: 0; url=http://www.phpconcept.net/newpage/ );
?>
นอกจากนี้คุณยังสามารถเขียน url สั้นๆ ได้หากเป็นการ Re-direct ไปที่เว็บเซิร์ฟเวอร์เดียวกัน
<?
header( refresh: 5; url=/webdsn/ );
?>
<?
header( refresh: 3; url=/ );
?>
ข้อควรระวังก็คือการใช้คำสั่ง header() นี้จะต้องถูกเรียกใช้ก่อนที่จะมีการส่งค่าอื่นๆ เพื่อให้บราวเซอร์แสดงผล คุณจะไม่สามารถนำ HTML tags บรรทัดว่างๆ หรือแม้แต่กระทั่งช่องว่างเพียง 1 ช่องแทรกไว้ก่อนคำสั่งนี้
เช่นดังตัวอย่างต่อไปนี้
<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header(Location: http://www.example.com/);
?>
คำสั่ง header() นี้สามารถใช้งานได้หลากหลายเช่น สามารถกำหนดให้เว็บเพจหมดอายุได้เช่นกัน คุณสามารถอ่านรายละเอียดเพิ่มเติมของคำสั่ง header() นี้ได้ที่ http://www.php.net/header ครับ
ขึ้นไปด้านบน
