พอดีเพื่อนถามว่ามีโคดตรวจสอบเบราเซอร์ป่าว
ตอนแรกผมก็ไม่รู้หรอกนะคับ ว่ามันเขียนยังไง
ก็ถามกูเกิลเอา แล้วก็ส่งลิงค์ให้เพื่อน - -”
ก็เลยถือโอกาสเอามาเขียนซะหน่อย
เอาไปใช้ทำไร
ไม่รู้เหมือนกันอะคับ ไม่เคยมีความจำเป็นต้องใช้
แต่ที่เห็นว่าน่าจะใช้ก็พวกโคดเก็บสถิติการเข้าเว็บต่าง ๆ
การเขียนโคดเพื่อทำงานเฉพาะแต่ละเบราเซอร์(ตอนนี้ไม่นิยมแล้ว)
ภาษาที่ใช้
- php หรือ
- javascript
ตรวจสอบโดยใช้ PHP
วิธีแรกเราจะใช้ $_SERVER['HTTP_USER_AGENT'] ซึ่งจะคืนค่า
มาเป็น string ประกอบด้วยข้อมูลของผู้ใช้ที่เข้าเว็บเรา
เช่น ระบบปฏิบัติการ, เบราเซอร์
ตัวอย่าง สมมติคนที่เข้าเว็บเราใช้ ie 6 บน windows
ข้อมูลที่ได้ก็จะเป็นดังนี้
-
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
เริ่มปฏิบัติการด้วยการใช้ฟังก์ชัน strpos() หาว่าใน string
ที่ใส่เข้าไปเป็น parameter ตัวแรกเนี่ย มีคำ
ที่ใส่เข้าไปเป็น parameter ตัวที่สองไหม
ที่จริงแล้วฟังก์ชันนี้ใช้หาตำแหน่งคำ มันจะคืนค่ามาเป็น
false ถ้าหากมันหาคำนั้นไม่เจอ หรือ คืนค่าตัวเลขตำแหน่งมาถ้าหาเจอ
อีกวิธีนึง เป็นวิธีที่ใช้ฟังก์ชันที่ php เตรียมมาให้แล้ว
นั่นก็คือ get_browser() เป็นวิธีที่เรียกใช้ได้ง่ายมาก ๆ
ดังตัวอย่างข้างล่างนี้
-
<?php
-
?>
ถ้าจะใช้วิธีนี้คุณต้องโหลดไฟล์ browscap.ini มาเอง ดาวน์โหลด
ทั้งนี้ก็เพราะว่าไฟล์นี้เป็นไฟล์ที่เก็บรวมรวบข้อมูลไว้(ฐานข้อมูล)
มีการอัพเดทประจำ เขาจึงไม่รวมไว้กับการติดตั้ง php ต้องหามาใส่เอง
และเอา comment ในไฟล์ php.ini ออกดังนี้
-
[browscap]
-
browscap = extras/browscap.ini
เพียงเท่านี้ก็ใช้ได้แล้ว แต่ที่เลวร้ายที่สุดคือ หากคุณใช้บริการเว็บโฮสติ้ง
เขาคงไม่หาไฟล์ฐานข้อมูลนี้ มาใส่ให้คุณหรอกคับ
มันก็มีทางแก้อยู่เหมือนกัน มีคนทำ module ให้เราโหลดมา
แล้วเรียกใช้ได้เลย ดาวน์โหลด
โหลดแล้ว save เป็นชื่อ “php-local-browscap.php”
(ตั้งชื่อว่าอะไรก็ได้ แต่ผมขอใช้ชื่อนี้นะ)
และโหลดไฟล์ browscap.ini (save เป็นชื่อนี้เท่านั้น ถ้าไม่อยากยุ่งยาก) ดาวน์โหลด
มาไว้ในโฟล์เดอร์ที่เก็บโคดตรวจสอบเบราเซอร์ และ php-local-browscap.php ด้วย
เพราะไฟล์ php-local-browscap.php นี้มันก็จะดึงข้อมูลมาจาก browscap.ini
ใช้ฟังก์ชัน require_once();
เพื่อ include ไฟล์ข้างต้นนี้มาไว้ในไฟล์ php ที่เราจะเขียนโคดตรวจสอบเบราเซอร์
-
<?php
-
require_once("php-local-browscap.php");
-
?>
เปลี่ยนจากฟังก์ชัน get_browser() เป็น get_browser_local()
-
<?php
-
$uas = get_browser_local();
-
echo "<br />";
-
?>
เสร็จแล้ว ง่ายไม๊
ตรวจสอบโดยใช้ javascript
ส่วนการใช้ javascript ก็ตามโคดข้างล่างนี้เลยครับ ผมจะไม่อธิบายเพราะ
ไม่ค่อยรู้เรื่อง javascript คับ
-
<script type="text/javascript">
-
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
-
var ieversion=new Number(RegExp.$1)
-
if (ieversion>=8)
-
document.write("คุณกำลังใช้ IE8 หรือใหม่กว่านั้น")
-
else if (ieversion>=7)
-
document.write("คุณกำลังใช้ IE7.x")
-
else if (ieversion>=6)
-
document.write("คุณกำลังใช้ IE6.x")
-
else if (ieversion>=5)
-
document.write("คุณกำลังใช้ IE5.x")
-
}else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
-
var ffversion=new Number(RegExp.$1)
-
if (ffversion>=3)
-
document.write("คุณกำลังใช้ FF 3.x หรือใหม่กว่านั้น")
-
else if (ffversion>=2)
-
document.write("คุณกำลังใช้ FF 2.x")
-
else if (ffversion>=1)
-
document.write("คุณกำลังใช้ FF 1.x")
-
}else{
-
document.write("n/a")
-
}
-
</script>
ถนัดวิธีไหนก็ใช้วิธีนั้นละกันคับ
References:
- http://lab.amanwithapencil.com/user_agent/
- http://www.javascriptkit.com/jsref/navigator.shtml
- http://php.about.com/od/learnphp/p/http_user_agent.htm
- http://us2.php.net/manual/en/function.get-browser.php
- http://forums.codewalkers.com/php-coding-7/browscap-ini-directive-not-set-712891.html
- http://discussion.dreamhost.com/showflat.pl?Cat=&Board=forum_programming&Number=83043
- http://us2.php.net/manual/en/misc.configuration.php#ini.browscap
- http://browsers.garykeith.com/downloads.asp
- http://alexandre.alapetite.net/doc-alex/php-local-browscap/index.en.html#download
- http://th.php.net/manual/en/function.strpos.php
Trackback url : คุณสามารถ trackback จากเว็บคุณได้

คอมเม้นท์ซะหน่อย