Codeigniter

모바일인지 체크하기 위해서 다음과 같이 개발하였다.  여기서는 php  codeigniter 를 사용하였습니다.

다음 함수는 소스로 사용하면 되겠습니다.

$_SERVER['HTTP_USER_AGENT'] 를 찍어보면 pc 에서는 다음과 같이

//mozilla/5.0 (windows nt 6.1; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/60.0.3112.113 safari/537.36

출력합니다. 그래서 모바일에서만 출력 되는 값들 iphone, mobile, android 기타등등을 배열에 담습니다.

strpos 함수를 이용하였으며 strpos 함수는  대소문자를 구분하니깐 대문자와 소문자 모두 배열에 담아서 

존재할 경우 Mobile 단어를 찍고 반환 합니다. 최종 반환 값은 true 와 false 값이겠습니다.

 

function MobileCheck() {
    //mozilla/5.0 (windows nt 6.1; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/60.0.3112.113 safari/537.36
    $HTTP_USER_AGENT = strtolower($_SERVER['HTTP_USER_AGENT']);
    $os="Computer";
    $MobileArray  = array("lg","iphone","lgtelecom","skt","mobile","samsung","nokia","blackberry","android","android","sony","phone",
       "LG","IPHONE","LGTELECOM","SKT","MOBILE","SAMSUNG","NOKIA","BLACKBERRY","ANDROID","ANDROID","SONY","PHONE");
      
    for($i=0; $i<sizeof($MobileArray); $i++){ 
           if (strpos($HTTP_USER_AGENT, $MobileArray[$i])) {
                $os= "Mobile";
            }
    } 
    return $os=="Mobile" ? TRUE :FALSE;   
}

 

위와 같은 함수를 다음과 같이 사용합니다.

  if(MobileCheck()){ // 모바일일 경우  아래 실행
         // 
  }else{

      //pc 일 경우 실행

  }

         
 

codigniter 에서는 helper 에 임의값으로 정해서 php 파일로 생성합니다.

여기서는 mobilecheck_helper.php 로 만들어서 MobileCheck 함수를 넣었습니다.

config/autoload.php  ---->

$autoload['helper'] = array('url', 'mobilecheck');

 

이와 같이 하면 모바일과 pc 에 환경에 따라 원하는 데로 코딩할 수 있겠습니다.

 

예를 들어 macaronics.net 사이트 제가 개인적으로 블로그를 만든 사이트인경우에

다음과 같이 사용해 보았습니다.

header.php

                <div class="col-sm-9 top-info" >        
                        <?php                    
                            if(MobileCheck()){ // 모바일일 경우  아래 실행
                                  include APPPATH ."views/include/mobile_header_menu_v.php";       
                            }else{ // PC 일경우 아래 실행
                                include APPPATH ."views/include/pc_header_menu_v.php"; 
                            }
                        ?>     
                </div>

 

 

mobile_header_menu_v.php

<?php  defined('BASEPATH') OR exit('No direct script access allowed');  ?> 
               <ul>
                   
                <?php  
                    if($this->session->userdata("logged_in")==TRUE){ //로그인일 경우 실행
                        echo '
                            <li data-toggle="tooltip" data-placement="bottom" title="포스트하기"><a href="/index.php/user/post" class="my-skype" ><i class="glyphicon glyphicon-pencil"></i></a></li>
                            <li data-toggle="tooltip" data-placement="bottom" title="로그아웃"><a href="/index.php/auth/logout" class="my-pint" ><i class="glyphicon glyphicon-log-out"></i></a></li>
                            <li data-toggle="tooltip" data-placement="bottom" title="'.$this->session->userdata('nickname').'"><a href="/user" class="my-rss"><i class="glyphicon glyphicon-cog"></i></a></li> 
                        ';
                        if(@$this->session->userdata("auth_code") >=15){ //관리자 일경우 실행
                         echo '
                          <li data-toggle="tooltip" data-placement="bottom" title="관리자"><a href="/index.php/admin/" class="my-skype" ><i class="glyphicon glyphicon-star"></i></a></li>';                             
                        }   
                    }else{
                        echo ' <li data-toggle="tooltip" data-placement="bottom" title="로그인"><a href="/index.php/auth/" class="my-skype" ><i class="glyphicon glyphicon-user"></i></a></li>'; 
                        
                    }
                ?>                   
               </ul>

 

 

pc_header_menu_v.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?> 
                  
                  <?php 
                        
                        $returnURL =$_SERVER['REQUEST_URI'];
                        if(@$this->session->userdata('logged_in')==TRUE)
                        {
                    ?>
                        <?php 
                            if(@$this->session->userdata('auth_code') >= '15'){ //관리자일 경우 실행
                            echo '
                            <span class="hidden-xs">
                            <i class="fa fa-user">
                            </i><a href="/user">'.$this->session->userdata('nickname').'</a> 님 환영합니다.    
                            </span>
                            <span class="hidden-xs"><i class="fa fa-plus-square-o"></i><a href="/index.php/admin">관리자화면 </a></span>';   
                         ?>             
                            <span class="hidden-xs"><i class="fa fa-sign-out"></i><a href="/index.php/auth/logout<?=empty($returnURL) ? '' : '?returnURL='.rawurlencode($returnURL) ?>">로그 아웃</a></span>            
                        
                         <?php 
                          
                        }else{  // 가입한 유저일 경우 실행  
                            echo '
                            <span class="hidden-xs">
                            <i class="fa fa-user">
                            </i><a href="/index.php/user">'.$this->session->userdata('nickname').'</a> 님 환영합니다. 
                            </span>
                            <span class="hidden-xs"><i class="fa fa-plus-square-o"></i><a href="/user">USER 화면 </a></span>';
                        ?>  
                            <span class="hidden-xs"><i class="fa fa-sign-out"></i><a href="javascript:facebookLogOut()">로그 아웃</a></span>                
                        
                        <?  
                        } 
                          
                            ?>
                    <?php
                        } else{
                            
                            //1.현재 주소를 가지고서 로그인 페이지로 간다.
                            //2. 로그인 페이지에서 로그인폼으로 갈때 다시 $returnURL 값을 저장후 가져간다.
                            //3.로그인 $returnURL  을 이용해서 폼에서 다시 보내 로그인 한후 현재 로그인 클릭전 위치로 되돌아 간다.
                            //$returnURL =$_SERVER['REQUEST_URI']; //http:localhost/ 이후 값이 저장됨.
                            
                    ?>
                        <span class="hidden-xs"><i class="fa fa-thumbs-o-up"></i><a href="/index.php/user/register">회원가입</a></span>
                        <span class="hidden-xs"><i class="fa fa-sign-in"></i><a href="/index.php/auth<?=empty($returnURL) ? '' : '?returnURL='.rawurlencode($returnURL) ?>">로그인</a></span>
                    <?php  
                    
                        }                   
                    ?>                  
                    <span><i class="fa fa-share-square"></i> <a href="/index.php/user/post" id="post_posting"><?php echo $sns_id ?>포스트 하기</a></span>
               
   
   
PC                

 

 

 

 

모바일

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

우리들 대부분은 초라한 옷차림과 엉터리 가구들을 부끄럽게 여기지만, 그보다는 초라한 생각과 엉터리 철학을 부끄럽게 여길 줄 알아야 한다. -아인슈타인

댓글 ( 4)

댓글 남기기

작성