редирект на мобильную версию сайта на php

Discussion in 'PHP' started by GAiN, 22 Jan 2012.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    посоветуйте пожалуйста скрипт редиректа при посещении с мобильных устройств.
    проверял такой скрипт, редирект не происходит:
    http://habrasorium.ru/php/565-perenapravlyaim-mobilnye-ustrojstva-na-mobversiyu-sajta-php.html
     
  2. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    PHP:
    <?php

    $agent 
    $_SERVER['HTTP_USER_AGENT']; 

    if (
    (
    stripos($agent'acs') !== false) ||
    (
    stripos($agent'alav') !== false) ||
    (
    stripos($agent'alca') !== false) ||
    (
    stripos($agent'amoi') !== false) ||
    (
    stripos($agent'audi') !== false) ||
    (
    stripos($agent'aste') !== false) ||
    (
    stripos($agent'avan') !== false) ||
    (
    stripos($agent'benq') !== false) ||
    (
    stripos($agent'bird') !== false) ||
    (
    stripos($agent'blac') !== false) ||
    (
    stripos($agent'blaz') !== false) ||
    (
    stripos($agent'brew') !== false) ||
    (
    stripos($agent'cell') !== false) ||
    (
    stripos($agent'cldc') !== false) ||
    (
    stripos($agent'cmd-') !== false) ||
    (
    stripos($agent'dang') !== false) ||
    (
    stripos($agent'doco') !== false) ||
    (
    stripos($agent'eric') !== false) ||
    (
    stripos($agent'hipt') !== false) ||
    (
    stripos($agent'inno') !== false) ||
    (
    stripos($agent'ipaq') !== false) ||
    (
    stripos($agent'java') !== false) ||
    (
    stripos($agent'jigs') !== false) ||
    (
    stripos($agent'kddi') !== false) ||
    (
    stripos($agent'keji') !== false) ||
    (
    stripos($agent'leno') !== false) ||
    (
    stripos($agent'lg-c') !== false) ||
    (
    stripos($agent'lg-d') !== false) ||
    (
    stripos($agent'lg-g') !== false) ||
    (
    stripos($agent'lge-') !== false) ||
    (
    stripos($agent'maui') !== false) ||
    (
    stripos($agent'maxo') !== false) ||
    (
    stripos($agent'midp') !== false) ||
    (
    stripos($agent'mits') !== false) ||
    (
    stripos($agent'mmef') !== false) ||
    (
    stripos($agent'mobi') !== false) ||
    (
    stripos($agent'mot-') !== false) ||
    (
    stripos($agent'moto') !== false) ||
    (
    stripos($agent'mwbp') !== false) ||
    (
    stripos($agent'nec-') !== false) ||
    (
    stripos($agent'newt') !== false) ||
    (
    stripos($agent'noki') !== false) ||
    (
    stripos($agent'opwv') !== false) ||
    (
    stripos($agent'palm') !== false) ||
    (
    stripos($agent'pana') !== false) ||
    (
    stripos($agent'pant') !== false) ||
    (
    stripos($agent'pdxg') !== false) ||
    (
    stripos($agent'phil') !== false) ||
    (
    stripos($agent'play') !== false) ||
    (
    stripos($agent'pluc') !== false) ||
    (
    stripos($agent'port') !== false) ||
    (
    stripos($agent'prox') !== false) ||
    (
    stripos($agent'qtek') !== false) ||
    (
    stripos($agent'qwap') !== false) ||
    (
    stripos($agent'sage') !== false) ||
    (
    stripos($agent'sams') !== false) ||
    (
    stripos($agent'sany') !== false) ||
    (
    stripos($agent'sch-') !== false) ||
    (
    stripos($agent'sec-') !== false) ||
    (
    stripos($agent'send') !== false) ||
    (
    stripos($agent'seri') !== false) ||
    (
    stripos($agent'sgh-') !== false) ||
    (
    stripos($agent'shar') !== false) ||
    (
    stripos($agent'sie-') !== false) ||
    (
    stripos($agent'siem') !== false) ||
    (
    stripos($agent'smal') !== false) ||
    (
    stripos($agent'smar') !== false) ||
    (
    stripos($agent'sony') !== false) ||
    (
    stripos($agent'sph-') !== false) ||
    (
    stripos($agent'symb') !== false) ||
    (
    stripos($agent't-mo') !== false) ||
    (
    stripos($agent'teli') !== false) ||
    (
    stripos($agent'tim-') !== false) ||
    (
    stripos($agent'tosh') !== false) ||
    (
    stripos($agent'tsm-') !== false) ||
    (
    stripos($agent'upg1') !== false) ||
    (
    stripos($agent'upsi') !== false) ||
    (
    stripos($agent'vk-v') !== false) ||
    (
    stripos($agent'voda') !== false) ||
    (
    stripos($agent'w3cs') !== false) ||
    (
    stripos($agent'wap-') !== false) ||
    (
    stripos($agent'wapa') !== false) ||
    (
    stripos($agent'wapi') !== false) ||
    (
    stripos($agent'wapp') !== false) ||
    (
    stripos($agent'wapr') !== false) ||
    (
    stripos($agent'webc') !== false) ||
    (
    stripos($agent'winw') !== false) ||
    (
    stripos($agent'winw') !== false) ||
    (
    stripos($agent'xda') !== false) ||
    (
    stripos($agent'xda-') !== false) ||
    (
    stripos($agent'up.browser') !== false) ||
    (
    stripos($agent'up.link') !== false) ||
    (
    stripos($agent'windows.ce') !== false) ||
    (
    stripos($agent'iemobile') !== false) ||
    (
    stripos($agent'mini') !== false) ||
    (
    stripos($agent'mmp') !== false) ||
    (
    stripos($agent'symbian') !== false) ||
    (
    stripos($agent'midp') !== false) ||
    (
    stripos($agent'wap') !== false) ||
    (
    stripos($agent'phone') !== false) ||
    (
    stripos($agent'pocket') !== false) ||
    (
    stripos($agent'mobile') !== false) ||
    (
    stripos($agent'pda') !== false) ||
    (
    stripos($agent'PPC') !== false) ||
    (
    stripos($agent'Series60') !== false) ||
    (
    stripos($agent'Opera.Mini') !== false)
    ) {
        if (
            (
    stripos($agent'windows.nt') === false) &&
            (
    stripos($agent'bsd') === false) &&
            (
    stripos($agent'x11') === false) &&
            (
    stripos($agent'unix') === false) &&
            (
    stripos($agent'macos') === false) &&
            (
    stripos($agent'macintosh') === false) &&
            (
    stripos($agent'playstation') === false) &&
            (
    stripos($agent'google') === false) &&
            (
    stripos($agent'yandex') === false) &&
            (
    stripos($agent'bot') === false) &&
            (
    stripos($agent'libwww') === false) &&
            (
    stripos($agent'msn') === false) &&
            (
    stripos($agent'america') === false) &&
            (
    stripos($agent'avant') === false) &&
            (
    stripos($agent'download') === false) &&
            (
    stripos($agent'fdm') === false) &&
            (
    stripos($agent'maui') === false) &&
            (
    stripos($agent'webmoney') === false) &&
            (
    stripos($agent'windows-media-player') === false)
        ) {
                
    header('Location: http://mob-site.com');
                exit;
          }
    }
     
    1 person likes this.
  3. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    А не проще сделать конструкцию вида:

    $mobile_agents = array('aaa', 'bbb', 'ccc' ..., 'zzz'); $is_mobile = false;

    foreach ($mobile_agents as $agent)
    {
    if (strstr($_SERVER['HTTP_USER_AGENT'], $agent))
    {
    $is_mobile = true; break;
    }
    }
     
  4. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    а не проще ли использовать in_array() ?

    PHP:
    $mobile_browser = array('br1','br2'....);

    if(
    in_array($agent,$mobile_browser)) {
     
    // Catched
    }
     
  5. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Проще, но мне как-то побоку. Все что я сделал это ctrl+c ctrl+v.
     
  6. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Не проще, там же не полные названия агентов, а только их часть.
     
  7. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    А ну да )
     
  8. Serafim

    Serafim Elder - Старейшина

    Joined:
    24 Oct 2006
    Messages:
    181
    Likes Received:
    103
    Reputations:
    18
    Code:
    (function(a,b){if(/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/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|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))window.location=b})(navigator.userAgent||navigator.vendor||window.opera,'http://site.com');
    Собственно простой js для сего дела.
     
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Serafim хорошо, но вдруг отключен, и помоему не все мобилки его поддерживают.
    Skofield тру код.

    PHP:
    <?php

    $arr 
    = array(
    'acs',
    'alav',
    'alca',
    'amoi',
    'audi',
    'aste',
    'avan',
    'benq',
    'bird',
    'blac',
    'blaz',
    'brew',
    'cell',
    'cldc',
    'cmd-',
    'dang',
    'doco',
    'eric',
    'hipt',
    'inno',
    'ipaq',
    'java',
    'jigs',
    'kddi',
    'keji',
    'leno',
    'lg-c',
    'lg-d',
    'lg-g',
    'lge-',
    'maui',
    'maxo',
    'midp',
    'mits',
    'mmef',
    'mobi',
    'mot-',
    'moto',
    'mwbp',
    'nec-',
    'newt',
    'noki',
    'opwv',
    'palm',
    'pana',
    'pant',
    'pdxg',
    'phil',
    'play',
    'pluc',
    'port',
    'prox',
    'qtek',
    'qwap',
    'sage',
    'sams',
    'sany',
    'sch-',
    'sec-',
    'send',
    'seri',
    'sgh-',
    'shar',
    'sie-',
    'siem',
    'smal',
    'smar',
    'sony',
    'sph-',
    'symb',
    't-mo',
    'teli',
    'tim-',
    'tosh',
    'tsm-',
    'upg1',
    'upsi',
    'vk-v',
    'voda',
    'w3cs',
    'wap-',
    'wapa',
    'wapi',
    'wapp',
    'wapr',
    'webc',
    'winw',
    'winw',
    'xda',
    'xda-',
    'up.browser',
    'up.link',
    'windows.ce',
    'iemobile',
    'mini',
    'mmp',
    'symbian',
    'midp',
    'wap',
    'phone',
    'pocket',
    'mobile',
    'pda',
    'PPC',
    'Series60',
    'Opera.Mini',
    'windows.nt',
    'bsd',
    'x11',
    'unix',
    'macos',
    'macintosh',
    'playstation',
    'google',
    'yandex',
    'bot',
    'libwww',
    'msn',
    'america',
    'avant',
    'download',
    'fdm',
    'maui',
    'webmoney');

    if(isset(
    $_SERVER["HTTP_USER_AGENT"]) && !empty($_SERVER["HTTP_USER_AGENT"])) {
        if(
    preg_match('#'.implode('|',$arr).'#i'$_SERVER["HTTP_USER_AGENT"])) {
            @
    header('http://ya.ru');
            exit;
        }
    }
    ?>
     
  10. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    Код htaccess:
     
  11. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    PHP:
        if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$_SERVER['HTTP_USER_AGENT'])||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|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($_SERVER['HTTP_USER_AGENT'],0,4))){
            if(
    $_SERVER['SERVER_NAME'] == 'mail.ru'){
                
    header('Location: http://m.mail.ru');
                die();
            }
        }