layersmenu-browser_detection.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. function inAgent($string)
  3. {
  4. if (isset($_SERVER['HTTP_USER_AGENT'])) {
  5. $http_user_agent = $_SERVER['HTTP_USER_AGENT'];
  6. } else {
  7. $http_user_agent = '';
  8. }
  9. return !(strpos($http_user_agent, $string) === false);
  10. }
  11. if (inAgent('Gecko')) {
  12. $browser = 'Mozilla';
  13. } elseif (
  14. inAgent('Lynx') || inAgent('lynx')
  15. || inAgent('Links') || inAgent('links')
  16. || inAgent('w3m')
  17. ) {
  18. $browser = 'TEXT';
  19. // I detect Konqueror and Opera before than the others,
  20. // as they often qualify themselves as Mozilla/Netscape/MSIE
  21. } elseif (inAgent('Konqueror')) {
  22. if (inAgent('Konqueror 1') || inAgent('Konqueror/1')) {
  23. $browser = 'Konqueror1';
  24. // On KDE 1.1.2, kfm qualifies itself as "Konqueror/1.1.2"
  25. // (tested on Red Hat Linux 6.2)
  26. } elseif (inAgent('Konqueror 2.0') || inAgent('Konqueror/2.0')
  27. || inAgent('Konqueror 2;') || inAgent('Konqueror/2;')
  28. || inAgent('Konqueror 2)') || inAgent('Konqueror/2)')
  29. ) {
  30. $browser = 'Konqueror20';
  31. } elseif (inAgent('Konqueror 2.1') || inAgent('Konqueror/2.1')) {
  32. $browser = 'Konqueror21';
  33. } else {
  34. $browser = 'Konqueror';
  35. }
  36. } elseif (inAgent('Opera')) {
  37. if (inAgent('Opera 4') || inAgent('Opera/4')) {
  38. $browser = 'Opera4';
  39. // I hope that Opera 4 users can be satisfied by the Plain menu version;
  40. // sorry, but I have never used Opera 4 and I do not have a copy of it
  41. // to perform tests. If you are using Opera < 4, it's your problem :-P
  42. } elseif ((inAgent('Opera 6') || inAgent('Opera/6')) && inAgent('Linux')) {
  43. $browser = 'Opera6forLinux';
  44. } elseif (
  45. inAgent('Opera 5') || inAgent('Opera/5')
  46. || inAgent('Opera 6') || inAgent('Opera/6')
  47. ) {
  48. $browser = 'Opera56';
  49. } else {
  50. $browser = 'Opera';
  51. }
  52. } elseif (inAgent('Safari')) {
  53. $browser = 'Safari';
  54. } elseif (inAgent('MSIE 4') || inAgent('MSIE/4')) {
  55. $browser = 'IE4';
  56. } elseif (inAgent('MSIE')) {
  57. $browser = 'IE5';
  58. // msie != 4 is handled like msie 5+; if you are using msie 3-, it's your problem :-P
  59. } elseif (inAgent('Mozilla 4') || inAgent('Mozilla/4')) {
  60. $browser = 'NS4';
  61. } else {
  62. $browser = 'Unknown';
  63. }
  64. if (
  65. $browser == 'TEXT'
  66. || $browser == 'Konqueror1' || $browser == 'Konqueror20' || $browser == 'Konqueror21'
  67. // IMO, on Konqueror 2.1, the Plain version is more usable than the "OLD" one
  68. || $browser == 'Opera4'
  69. ) {
  70. $menuType = 'PLAIN';
  71. } elseif ($browser == 'NS4' || $browser == 'Opera56' || $browser == 'IE4') {
  72. $menuType = 'OLD';
  73. } else {
  74. $menuType = 'DOM';
  75. }
  76. ?>