Лучший способ перенаправить одну страницу php для мобильных устройств с помощью PHP / Javascript

У меня есть приложение Google Maps Google, которое я хочу сделать видимым для пользователей, когда они используют рабочий стол, но перенаправляются на другую страницу PHP, если посетитель использует мобильное устройство. Я знаю, что существует множество способов сделать это от ОС до обнаружения типа браузера, но было интересно, может ли кто-нибудь предоставить какой-то код, который они считают лучшим способом справиться с этим, и он является наиболее последовательным?

Related of "Лучший способ перенаправить одну страницу php для мобильных устройств с помощью PHP / Javascript"

Если вы не хотите использовать javascript, вы можете обрабатывать его через php. Взгляните на этот lib: http://code.google.com/p/php-mobile-detect/ . И тогда вы можете сделать что-то вроде:

 <?php include 'Mobile_Detect.php'; $detect = new Mobile_Detect(); if ($detect->isMobile()) { header('Location: yourpage.php'); exit(0); } 

Отказ от ответственности: я знаю, что это регулярное выражение не идеально, поэтому не голосуйте за это 🙂

Просто хотел поделиться этими несколькими моментами.

  1. Некоторые серверы имеют $ _SERVER ['HTTP_USER_AGENT'] как не установленные, поэтому убедитесь, что сначала пуст
  2. Читаемость важна для нас, поэтому мы используем это вместо других сложных регулярных выражений. Просто добавьте другие устройства по своему усмотрению.

Вот код, который мы используем:

 <?php if(! empty($_SERVER['HTTP_USER_AGENT'])){ $useragent = $_SERVER['HTTP_USER_AGENT']; if( preg_match('@(iPad|iPod|iPhone|Android|BlackBerry|SymbianOS|SCH-M\d+|Opera Mini|Windows CE|Nokia|SonyEricsson|webOS|PalmOS)@', $useragent) ){ header('Location: ./mobile/'); } } ?> 

Использование строки user-agent

 $useragent=$_SERVER['HTTP_USER_AGENT']; if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[aw])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) header('Location: http://detectmobilebrowser.com/mobile'); 

http://detectmobilebrowsers.com/

Вы хотите использовать javascript или php? Используя JS, вы можете просто проверить, есть ли «Мобильный» в UA:

 if (navigator.userAgent.indexOf('Mobile') > -1) location.href = 'your-mobile-page-url'; 

Вы можете попробовать использовать простые условия измерения

 if (screen.width < 600 || screen.height < 200) { window.location = 'anotherPage.html' } 

размеры screen и window будут разными, если окно браузера минимизировано

Может использовать комбинацию оконных / экранных тестов и предупреждать пользователя о проблемах и давать им возможность перенаправлять

Проверка устройств:

 function UserAgentRegCheck($regText) { $useragent = $_SERVER['HTTP_USER_AGENT']; return preg_match('@('.$regText.')@', $useragent); } function isIphone() { return UserAgentRegCheck('iPad|iPod|iPhone'); } function isAndroid() { return UserAgentRegCheck('Android'); } function isMobile(){ return UserAgentRegCheck('iPad|iPod|iPhone|Android|BlackBerry|SymbianOS|SCH-M\d+|Opera Mini|Windows CE|Nokia|SonyEricsson|webOS|PalmOS'); } 

Код переадресации:

 if(isIphone()) { header('Location: http://www.google.com.ua'); exit(); } if(isAndroid()) { header('Location: http://youtube.com'); exit(); }