เขียน code ตรวจสอบ browser

อยู่ในประเภท: PHP, Uncategorized |
โพสเมื่อ

พอดีเพื่อนถามว่ามีโคดตรวจสอบเบราเซอร์ป่าว
ตอนแรกผมก็ไม่รู้หรอกนะคับ ว่ามันเขียนยังไง
ก็ถามกูเกิลเอา แล้วก็ส่งลิงค์ให้เพื่อน - -”
ก็เลยถือโอกาสเอามาเขียนซะหน่อย

เอาไปใช้ทำไร
ไม่รู้เหมือนกันอะคับ ไม่เคยมีความจำเป็นต้องใช้
แต่ที่เห็นว่าน่าจะใช้ก็พวกโคดเก็บสถิติการเข้าเว็บต่าง ๆ
การเขียนโคดเพื่อทำงานเฉพาะแต่ละเบราเซอร์(ตอนนี้ไม่นิยมแล้ว)

ภาษาที่ใช้

  • php หรือ
  • javascript

ตรวจสอบโดยใช้ PHP
วิธีแรกเราจะใช้ $_SERVER['HTTP_USER_AGENT'] ซึ่งจะคืนค่า
มาเป็น string ประกอบด้วยข้อมูลของผู้ใช้ที่เข้าเว็บเรา
เช่น ระบบปฏิบัติการ, เบราเซอร์
ตัวอย่าง สมมติคนที่เข้าเว็บเราใช้ ie 6 บน windows
ข้อมูลที่ได้ก็จะเป็นดังนี้

  1. 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 ถ้าหากมันหาคำนั้นไม่เจอ หรือ คืนค่าตัวเลขตำแหน่งมาถ้าหาเจอ

  1. <?php
  2. $ua = $_SERVER[‘HTTP_USER_AGENT’];
  3. if (strpos($ua,‘MSIE 5′)) {
  4. echo "คุณกำลังใช้ IE5.x";
  5. }else if (strpos($ua,‘MSIE 6′)) {
  6. echo "คุณกำลังใช้ IE6.x";
  7. }else if (strpos($ua,‘MSIE 7′)) {
  8. echo "คุณกำลังใช้ IE7.x";
  9. }else if (strpos($ua,‘MSIE 8′)) {
  10. echo "คุณกำลังใช้ IE8.x";
  11. }else if(strpos($ua,‘Firefox/1′)){
  12. echo "คุณกำลังใช้ FF 1.x";
  13. }else if(strpos($ua,‘Firefox/2′)){
  14. echo "คุณกำลังใช้ FF 2.x";
  15. }else if(strpos($ua,‘Firefox/3′)){
  16. echo "คุณกำลังใช้ FF 3.x";
  17. }else{
  18. echo "n/a";
  19. }
  20. ?>

อีกวิธีนึง เป็นวิธีที่ใช้ฟังก์ชันที่ php เตรียมมาให้แล้ว
นั่นก็คือ get_browser() เป็นวิธีที่เรียกใช้ได้ง่ายมาก ๆ
ดังตัวอย่างข้างล่างนี้

  1. <?php
  2. $ua = get_browser();
  3. echo "<br />Browser = ".$ua->browser." Version = ".$ua->version;
  4. ?>

ถ้าจะใช้วิธีนี้คุณต้องโหลดไฟล์ browscap.ini มาเอง ดาวน์โหลด
ทั้งนี้ก็เพราะว่าไฟล์นี้เป็นไฟล์ที่เก็บรวมรวบข้อมูลไว้(ฐานข้อมูล)
มีการอัพเดทประจำ เขาจึงไม่รวมไว้กับการติดตั้ง php ต้องหามาใส่เอง
และเอา comment ในไฟล์ php.ini ออกดังนี้

  1. [browscap]
  2. browscap = extras/browscap.ini

เพียงเท่านี้ก็ใช้ได้แล้ว แต่ที่เลวร้ายที่สุดคือ หากคุณใช้บริการเว็บโฮสติ้ง
เขาคงไม่หาไฟล์ฐานข้อมูลนี้ มาใส่ให้คุณหรอกคับ :P

มันก็มีทางแก้อยู่เหมือนกัน มีคนทำ module ให้เราโหลดมา
แล้วเรียกใช้ได้เลย ดาวน์โหลด
โหลดแล้ว save เป็นชื่อ “php-local-browscap.php”
(ตั้งชื่อว่าอะไรก็ได้ แต่ผมขอใช้ชื่อนี้นะ)
และโหลดไฟล์ browscap.ini (save เป็นชื่อนี้เท่านั้น ถ้าไม่อยากยุ่งยาก) ดาวน์โหลด
มาไว้ในโฟล์เดอร์ที่เก็บโคดตรวจสอบเบราเซอร์ และ php-local-browscap.php ด้วย
เพราะไฟล์ php-local-browscap.php นี้มันก็จะดึงข้อมูลมาจาก browscap.ini

ใช้ฟังก์ชัน require_once();
เพื่อ include ไฟล์ข้างต้นนี้มาไว้ในไฟล์ php ที่เราจะเขียนโคดตรวจสอบเบราเซอร์

  1. <?php
  2. require_once("php-local-browscap.php");
  3. ?>

เปลี่ยนจากฟังก์ชัน get_browser() เป็น get_browser_local()

  1. <?php
  2. $uas = get_browser_local();
  3. echo "<br />Browser = ".$uas->browser." Version = ".$uas->version;
  4. echo "<br />";
  5. ?>

เสร็จแล้ว ง่ายไม๊

ตรวจสอบโดยใช้ javascript
ส่วนการใช้ javascript ก็ตามโคดข้างล่างนี้เลยครับ ผมจะไม่อธิบายเพราะ
ไม่ค่อยรู้เรื่อง javascript คับ

  1. <script type="text/javascript">
  2. if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
  3. var ieversion=new Number(RegExp.$1)
  4. if (ieversion>=8)
  5. document.write("คุณกำลังใช้ IE8 หรือใหม่กว่านั้น")
  6. else if (ieversion>=7)
  7. document.write("คุณกำลังใช้ IE7.x")
  8. else if (ieversion>=6)
  9. document.write("คุณกำลังใช้ IE6.x")
  10. else if (ieversion>=5)
  11. document.write("คุณกำลังใช้ IE5.x")
  12. }else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
  13. var ffversion=new Number(RegExp.$1)
  14. if (ffversion>=3)
  15. document.write("คุณกำลังใช้ FF 3.x หรือใหม่กว่านั้น")
  16. else if (ffversion>=2)
  17. document.write("คุณกำลังใช้ FF 2.x")
  18. else if (ffversion>=1)
  19. document.write("คุณกำลังใช้ FF 1.x")
  20. }else{
  21. document.write("n/a")
  22. }
  23. </script>

ถนัดวิธีไหนก็ใช้วิธีนั้นละกันคับ

References:

แท็กส์ : , , , , , ,
Trackback url : คุณสามารถ trackback จากเว็บคุณได้


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

10 + 6 =