일단 그누보드 소스를 한번 참고 해보시는건 어떨까 생각됩니다.

일반적으로는 스크립트로 처리 하시는 분들도 있고 한대 세션을 걸어서 다시 접속해도 인지를 할수 있게 하는 방법도 나쁘지 않습니다.


어른패드에서는 PC버전으로 뜹니다.


define("_GNUBOARD_", TRUE);

$g4['use_mobile']           = true;

$g4['g4m']                  = "m";

$g4['g4m_path']             = "{$g4['path']}/{$g4['g4m']}";

$g4['g4m_bbs']              = "bbs";

$g4['g4m_bbs_path']         = "{$g4['g4m_path']}/{$g4['g4m_bbs']}";

$g4['g4m_url']              = "{$g4['url']}/{$g4['g4m']}";

$g4['g4m_admin']            = "adm";

$g4['g4m_admin_path']       = $g4['g4m_path'] . "/" . $g4['g4m_admin'];

$g4['thumb']                = $g4['g4m_path'] . "/thumb.php";


//모바일 체크 함수 적용법.

/*

 모바일 하단에 PC버전 링크에 ?from=mobile 추가, 추가 하지 않으면 클릭해도 다시 모바일로 돌아온다.

 PC버전 index.php 파일에 아래 내용 추가

 PC 버전 하단에 모바일 링크 제공 <a href="<?=$g4[path]?>/m/?from=pc">모바일</a> 

 이 링크는 frommoblie세션을 삭제해 모바일로 PC접버전 접속시 자동으로 모바일로 이동되게 한다.


//모바일 index.php 상단에 아래 추가  include_once "./_common.php"; 아래에 추가할것

//모바일 기기에서 PC버전 페이지의 모바일가기 링크 클릭하면 세션을 삭제.

if($_GET['from'] == 'pc'){

    set_session("frommoblie", "");

}


PC 버전 index.php 파일 상단에 아래 추가  include_once "./_common.php"; 아래에 추가할것

$chk_mobile = chkMobile();

if($_GET['from'] == 'mobile'){

    //새션 생성 이유는 모바일기기에서 PC버전 갔을경우 index.php을 다시 접속했을때 모바일로 오지않고 pc버전 유지하기 위해서이다.

    set_session("frommoblie", "1");

}

 

//모바일페이지로 이동,

if($chk_mobile == true && !$_SESSION['frommoblie']){

    header("location:/{$g4['g4m_path'] }");

}

 * 말로 표현할 방법이 없네요.;;;

 * 한마디로 왔다갔다 꼬임 방지;;;

 * PC버전 바로가기 링크 클릭하면 모바일로 자동 이동 기능이 중지됨.

 * PC버전 페이지에서 모바일로 바로가기를 클릭하면 모바일로 자동 이동 기능이 활성화 됨.

 */

function chkMobile(){

    $mobile_browser = '0';

    if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {

        $mobile_browser++;

    }

    if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']), 'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {

        $mobile_browser++;

    }

    $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));

    $mobile_agents = array(

        'w3c ', 'acs-', 'alav', 'alca', 'amoi', 'audi', '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', 'oper', 'palm', 'pana', 'pant', 'phil', 'play', 'port', 'prox',

        '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', 'wap-', 'wapa', 'wapi', 'wapp',

        'wapr', 'webc', 'winw', 'winw', 'xda', 'xda-');


    if (in_array($mobile_ua, $mobile_agents)) {

        $mobile_browser++;

    }

    if (strpos(strtolower($_SERVER['ALL_HTTP']), 'OperaMini') > 0) {

        $mobile_browser++;

    }

    if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') > 0) {

        $mobile_browser = 0;

    }



    if ($mobile_browser > 0 && $_GET['from'] != 'mobile') {

        return true;

        //모바일 기기일 경우 모바일 페이지로

        /*

        if (!strstr($_SERVER['HTTP_REFERER'], "")) {

            header("location:");

        }

         *

         */

    }else{

        return false;

    }

'php' 카테고리의 다른 글

php.ini 에서 date.timezone  (0) 2012.10.06
PHP 홀수 짝수 구분  (0) 2012.09.21
PHP Mobile Device Detection (iOS, Android, BlackBerry, PlayBook, WebOS)  (0) 2012.08.15
php 환경 변수  (0) 2012.08.15
strip_tags 오늘 왜케 이뿌지...  (0) 2012.06.26

+ Recent posts