안녕하세요

 

오랫만에 PHP 관련 글을 올리네요.

 

이번 글은 API 연동을 하다보니 JSON 데이터를 POST방식으로 주고 받는 경우가 발생하여

내용을 정리해보았습니다. 

 

많은 도움이 되면 좋을 것 같습니다.^^

 

//POST로 전송할 JSON 데이터 샘플
{
    "user" : { "id" : "xxxxxxx"},
    "log":[
              {
                  "id":"1",
                  "log_val": "43"

              },
              {
                  "id":"2",
                  "log_val": "44"
              }
	  		]

}

//JSON 결과 데이터 샘플
{
    "result" : "200",
    "msg":[
            {
                "id":"1",
                "msg_val": "43_OK"

            },
            {
                "id":"2",
                "msg_val": "44_OK"
            }
          ]

}


<?php
//---------------------CURL를 활용하여 JSON데이터를 POST방식으로 요청하여 JSON데이터로 받기--------------------

//요청 서버 URL 셋팅
$url = "요청할 서버 URL";

//추가할 헤더값이 있을시 추가하면 됨
$headers = array(
		"content-type: application/json",
		"accept-encoding: gzip"
);

//POST방식으로 보낼 JSON데이터 생성
$arr_user = array();
$arr_log = array();
$arr_post = array();

$arr_user["id"] = "xxxxxxx";

$arr_post["user"] = $arr_user;

$arr_log[0]["id"] = "1";
$arr_log[0]["log_val"] = "43";
$arr_log[1]["id"] = "2";
$arr_log[1]["log_val"] = "44";

$arr_post["log"] = $arr_log;

//배열을 JSON데이터로 생성
$post_data = json_encode($arr_post);

//CURL함수 사용
$ch=curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
//header값 셋팅(없을시 삭제해도 무방함)
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//POST방식
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, true);
//POST방식으로 넘길 데이터(JSON데이터)
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);

$response = curl_exec($ch);

if(curl_error($ch)){
    $curl_data = null;
} else {
    $curl_data = $response;
}

curl_close($ch);

//받은 JSON데이터를 배열로 만듬
$json_data = json_decode($curl_data,true);
//배열 제어
if($json_data["result"] == "200"){
	$cnt = 0;
	foreach($json_data["msg"] as $msg_data){
		foreach($msg_data as $msgval_data){
			//msg_val값만 출력합니다.
			echo $msgval_data[$cnt]["msg_val"];
			$cnt++;
		}
	}
}

exit;
?>

 

 

러닝 PHP : PHP 입문에서 프레임워크를 활용한 실전 프로그래밍까지(PHP 7 기반)

COUPANG

www.coupang.com

 

안녕하세요

 

이번 내용은 php에서 mobiledetect 클래스를 활용하여 모바일페이지에서 디바이스 정보를 획득하는 방법을 알려드리겠습니다.

 

일반적으로 자주 사용되는 부분은 아니지만 간혹 모바일 환경에서 웹페이지를 통해 알 수 있는 최소한의 디바이스 정보를 획득하고 싶은 경우가 발생할때 사용하면 좋을 것 같습니다.

 

아래와 같이 따라 하시면 큰 문제없이 금방 하실 수 있으실 겁니다.

 

1. Mobile_Detect.php 를 다운받기 위해 http://mobiledetect.net/ 를 접속해서 Download 버튼을 클릭한다.

   (ZIP파일 압축해제 후 압축풀더 들어가면 Mobile_Detect.php 파일이 보임)

 

2. 예제 소스(아래 예제소스가 있는 파일과 Mobile_Detetc.php 파일위치는 동일해야 함)

   (모바일페이지 획득가능 정보 - 모바일여부/디바이스 제조사/디바이스OS/디바이스OS 버전)

<?php

require_once 'Mobile_Detect.php';      


$detect = new Mobile_Detect;  
//예제소스를 호출하는 웹브라우져가 모바일인지 아닌지를 체크함(1:모바일, 2:PC 등)
$devicetype = $detect->isMobile() ? 1 : 2;   

//모바일일때만 처리 
if($devicetype == 1){ 
    $devicemake = "";     //제조사 변수 초기화
    foreach($detect->getRules() as $name => $regex){ 
        if(substr($name, -2) == "OS") break;      //제조사 정보만을 위해 OS정보는 제외처리(데모참조)
        $check = $detect->{'is'.$name}(); 
        if($check) { 
             $devicemake = str_replace("Tablet","",$name);   //Tablet정보도 있음(데모참조)
             break; 
        } 
     }

    //디바이스OS 체크함(iOS, Android, ETC-WindowsMobile등)
     $deviceos = $detect->isiOS() ? "iOS" : ($detect->isAndroidOS() ? "Android" : "ETC"); 
     if($deviceos == "iOS"){ 
         $deviceosv = $detect->version("iOS");    //디바이스 OS 버전 정보(iOS)
     } else if ($deviceos == "Android"){ 
         $deviceosv = $detect->version("Android");  //디바이스 OS 버전 정보(Android)
     } else { 
         $deviceosv = $detect->version("Mobile");   //디바이스 OS 버전 정보(ETC)
     } 
} 

?>
 

러닝 PHP : PHP 입문에서 프레임워크를 활용한 실전 프로그래밍까지(PHP 7 기반)

COUPANG

www.coupang.com

 

3. 데모는 http://demo.mobiledetect.net/ 페이지를 참조하시길 바랍니다.

   (화면에 보이는 메서드 및 값을 확인하면 개발에 도움이 되실겁니다. 참고로 데모소스는 https://github.com/serbanghita/Mobile-Detect/tree/master/examples 에서 demo.php 파일을 확인하시면 되실것 같습니다.)

 

* github URL : https://github.com/serbanghita/Mobile-Detect

 

위의 내용은 저한테 최소 필요한 부분만 파악하여 정리한 내용이라 부족한 부분이 많습니다.

 

지속적으로 도움글 많이 주시면 고맙겠습니다.

 

오늘 하루도 즐거운 하루 되십시요^^ 이만 마치겠습니다.^^

안녕하세요.

 

자료를 수집하다 보면 기본 자료들을 웹페이지 검색을 통해서 가져오는 부분이 많으실텐데요.

 

이때 개발자이다보니 크롤링을 해오면 되지 않을까 싶어 검색해보니 간단한 방법이 있어 소개할려고 합니다.

(개발자가 창조적이라는 말을 많이 듣지만 저도 검색으로 많은 부분을 해결합니다.)

 

오늘은 간단하게 웹페이지를 크롤링하는 방법을 알아보겠습니다.

 

예제로 tv줌 인기랭킹의 순위 및 프로그램명을 가져올까 합니다.

 

1. 웹브라우저에서 tv줌 인기랭킹 페이지를 확인합니다.(https://tv.zum.com/ranking)

 

2. 웹브라우저의 개발자도구(F12)를 통해 HTML 구조를 파악합니다. 

   (영역 : 빨간색, 순위값 : 녹색, 프로그램명 : 파란색)

 

<예시 : tv줌 예시화면>

3. simple_html_dom 사이트에서 simple_html_dom.php 다운로드를 합니다.

   다운로드 URL : https://sourceforge.net/projects/simplehtmldom/files/simplehtmldom/ 에서 최신버전 다운로드

                       (ZIP파일 압축해제 후 압축풀더 들어가면 simple_html_dom.php 파일이 보임)

   온라인 설명서 URL : http://simplehtmldom.sourceforge.net/manual.htm 개발시 참조

 

4. 개발소스

<?php

header('Content-Type: text/html; charset=UTF-8'); 

//simple_html_dom php 파일을 include함 
include('simple_html_dom.php'); 

//가져올 url 설정
$url = 'https://tv.zum.com/ranking'; 
$html = @file_get_html($url); 

unset($arr_result); 
$arr_result = $html->find('div.tv_wrap>a');   //1위 ~ 3위 랭킹순위 및 프로그램명 가져오기
if(count($arr_result) > 0){                         //위의 이미지에서 a 태그에 포함되는 html dom 객체를 가져옴
    foreach($arr_result as $e){

        //children 속성을 이용해 맨 처음(0)의 태그 가져오기(<span class="rank_num">1</span>값 가져옴)
        echo $e->children(0)->plaintext.':';     //위의 값 중 1 값을 가져옴

        //children 속성을 이용해 맨 두번째(1)의 태그(<div class="tv_info">) 안의 두번째(1)의 태그 가져오기(<p class="program">미스트롯</p>값 가져옴)
        echo $e->children(1)->children(1)->plaintext.'<br/>';     //위의 값 중 미스트롯 값을 가져옴
    } 
} else { 
    echo "<br/>"; 
} 

unset($arr_result); 
$arr_result = $html->find('div.list_wrap>div.list');   //4위 ~ 50위 랭킹순위 및 프로그램명 가져오기
if(count($arr_result) > 0){ 
    foreach($arr_result as $e){ 
        echo $e->children(1)->plaintext.':'; 
        echo $e->children(2)->children(1)->children(0)->plaintext.'<br/>'; 
    } 
} else { 
    echo "<br/>"; 
}


exit;

?>
 

정보문화사] 성공적인 웹 프로그래밍 PHP와 MySQL 단품

COUPANG

www.coupang.com

 

위와 같이 html 구조를 분석하여 가져오면 간단하게 해결할 수 있습니다.

 

하시면서 궁금한 사항 있으면 글 남겨주세요.^^

 

서로 서로 도움이 될 수 있으면 좋겠습니다.^^

 

오늘도 행복한 하루 되십시요^^

3-1. 무료적립사이트(중)


우선 무료적립사이트를 하다보니 상중하로 평가하여 적립이 그래도 잘 되는 순으로 정리해볼까 합니다.

무료적립사이트(중)은 좀 내용이 많아서 나누어서 정리를 해보도록 하겠습니다. ^^

사이트 정리(광고시청을 통해 무료적립되는 사이트)

아래의 사항은 적립금이나 적립시간이 상황에 따라 변경이 됩니다.
초반에는 금액이 높은 경우도 있으나 시간이 흐르면서 금액을 조정하는 부분이 보이네요..

제가 생각해도 무료 적립 비트코인이 너무 세긴 하더라구요..^^

그리고 30분마다 적립, 1시간마다 적립, 2시간마다 적립되는 사이트입니다.

 

1. MMOclub : http://mmoclub.com/?id=420410 

    => 적립금 : 1 ~ 500satoshis(mBTC), 1시간마다 적립가능, 10,000satoshis가 되었

        을 때 cash out all 버튼을 통해 비트코인 지갑으로 넣어줌

2. BITCOINS4 : http://www.bitcoins4.me/

    => 적립금 : 100satoshis, 1시간마다 적립가능, 5500satoshis가 되었을때 pay me 버

        튼을 통해 비트코인 지갑으로 넣어줌

3. Daily Bitcoins : http://dailybitcoins.org/index.php

    => 적립금 : 50satoshis, 1시간마다 적립가능, 0.000055 BTC가 되었을때 Excute

        delayed payments버튼을 통해 비트코인 지갑으로 넣어줌

 

 

 

1. MMOclub : http://mmoclub.com/?id=420410

 

=> 접속 후 비트코인 주소를 입력한 후에 하단의 Get a Dispence 부분의 글자를 입력한 후 Claim 버튼을 클릭하면 적립됨(1시간마다 적립할 수 있음)

=> 중간부분에 적립된 금액을 확인 할 수 있으며 10,000satoshis가 되면 cash out all 버튼을 통해 비트코인 주소로 적립이 가능함

 

2. BITCOINS4 : http://www.bitcoins4.me/

 

=>비트코인 주소를 입력한 후 next버튼을 클릭한다.

=>우측 상단의 MoneyBox 버튼을 클릭하면 적립금액을 확인할 수 있다.

 

 

=>capcha 글자를 입력한 후 submit버튼을 클릭한다.

 

 

=>적립된 금액을 확인할 수 있으며 1시간마다 적립 가능함.

=> 상단 우측의 Home버튼을 클릭하면 bitcoins4 적립 페이지로 이동함.

=> pay me 버튼을 클릭시에 적립된 금액을 비트코인 주소로 보내줌.

 

3. Daily Bitcoins : http://dailybitcoins.org/index.php

 

=>Bitcoin wallet를 선택하고 비트코인 주소를 입력한 후 capcha 글자를 입력한 후 send 버튼을 클릭한다.

 

 

=> send 버튼 하단의 적립 성공 메세지를 확인할 수 있다.

 

 

=> 상단 메뉴 중 Payments를 클릭하면 적립된 내역을 확인할 수 있으며 우측 부분에 Excute delayed payments 버튼을 선택하면 비트코인 주소로 적립을 해줌.(최소 0.000055BTC이상이여야 함)

'찬의 경제방 > 비트코인' 카테고리의 다른 글

2. 무료적립사이트(상)  (0) 2014.01.06
1.비트코인 지갑 만들기  (0) 2014.01.03

2. 무료적립사이트(상)


우선 무료적립사이트를 하다보니 상중하로 평가하여 적립이 그래도 잘 되는 순으로 정리해볼까 합니다.


전체적으로 현재하고 있는 사이트는 16개가 되지만 상은 3개, 중은 11개, 하는 2개 정도로 나누어서 정리를 해보겠습니다.


사이트 정리(광고시청을 통해 무료적립되는 사이트)

1. BITVISITOR : http://www.bitvisitor.com

2. COINAD : https://coinad.com/?r=GHPPP3SCWFNW3PW    -  회원가입 필요

3. BTCCLICKS : http://btcclicks.com/?r=2f3a9d71 - 회원가입 필요

위의 무료적립사이트는 광고시청(사이트뷰)를 통해 무료로 비트코인이 적립되며 비트코인이 사이트에 정한 한계값을 넘었을때 비트코인 주소로 적립금을 보내주는 방식임


BITVISITOR 사이트에 대해서 정리하겠습니다.

(60uBTC 이상 - 자동으로 비트코인주소로 보냄)

1. 페이지인 중간부분에 자신의 비트코인주소를 넣어준 후 submit 버튼을 클릭한다.




2. CAPTCHA 넣은 후 visit 버튼을 클릭한다.




3. 광고페이지가 로드된 후 5분간 동안 시간이 지나면 금액이 적립되는 방식이다.

   - 상단에서 보면 자신의 적립된 비트코인과 5분이 지나면 우측 상단의 next버튼이 보인다.

   - next 버튼을 통해 계속해서 광고를 시청한다.



4. BITVISITOR 사이트는 적립된 비트코인이 60uBTC가 되면 일정시간 지난 후에 자동으로 자신의 비트코인 주소로 금액이 적립이 됨을 확인할 수 있다.


COINAD 사이트에 대해서 정리하겠습니다.
(0.15mBTC 이상 - cashout 버튼을 클릭하여 비트코인주소로 보냄)

1. Create Account 버튼을 클릭 후 계정을 생성한다.




2. 계정정보 입력 후 Sing Up 버튼을 클릭한다.


3. My account 메뉴를 클릭 후 로그인을 한다.



4. 로그인 후에는 My account라는 메뉴가 자신의 아이디로 바뀌면서 자신의 정보를 확인할 수 있다.

   - 비트코인 주소가 잘 기입되어 있는지 확인하십시오.

   - Balance는 광고를 시청하고 적립된 금액이며 Cashout이라는 부분은 0.15mBTC 이상의 비트코인이 충전되었을때 자신의 비트코인 주소로 금액을 전송하고자 할때 누르시면 됩니다.



5. 상단의 View Ads 메뉴를 선택후에 Active advertisements 에 있는 광고를 선택하여 무료적립을 받는다.

   - 광고선택 후 CAPTCHA 입력하는 화면이 나온 후에 광고를 일정시간 시청하게 되면 다시 광고목록이 뜨도록 되어있다. 계속해서 위의 과정을 반복하며 광고를 적립한다.




BTCCLICKS 사이트에 대해서 정리하겠습니다.
(0.1mBTC 이상 - Withdraw버튼을 클릭하여 비트코인주소로 보냄)

1. 회원가입 버튼을 클릭한다.



2. 정보를 입력하고 Sign Up 버튼을 클릭한 후 회원가입 절차를 완료한다.

   - 비트코인 주소는 나중에 변경이 가능하며 먼저 만들었던 비트코인 주소를 입력한다.

    (비트코인 주소가 없으시면 1.비트코인 지갑만들기 참조)



3. 로그인을 한 후 상단의 Surf Ads 메뉴를 선택한다.




4. 광고를 선택한다.

   - 광고선택 후 광고페이지가 열린 후에 일정시간이 지나면 아래와 같은 화면이 나오면

      상단에 나온 이미지의 값을 넣은 후 submit 버튼을 클릭하면

      위의 이미지처럼 이미 본 광고는 우측에 clicked라고 표시가 된다.




5.아래 그림은 상단의 빨간색으로 표시된 버튼으르 클릭하면 자신 계정에 대한 정보를 보여준다.

  또한 중간의 빨간색으로 표시된 버튼은 0.1mBTC가 적립되었을때 활성화가 되어 자신의 비트코인 주소에 적립된 금액을 넣어주도록 하는 부분이다.




위의 사이트는 광고가 많은 편이며 비트코인 금액도 타 무료적립사이트에 비해 높은 편이므로 채굴하는 것보다는 비트코인 적립하기에 좋다고 생각이 듭니다.

(단, COINAD사이트는 요즘 잘 접속이 안되는 경우가 발생하지만 비트코인 적립금액은 높은 편임)


채굴보다는 무료적립사이트를 통해 꾸준하게 적립을 해보는 것도 좋은 방법인것 같습니다. 저도 비트코인을 알려고 하다보니 이렇게 무료적립사이트까지 알게되어 글을 남깁니다. 많은 도움 되었으면 합니다.



'찬의 경제방 > 비트코인' 카테고리의 다른 글

3-1. 무료적립사이트(중)  (0) 2014.02.17
1.비트코인 지갑 만들기  (0) 2014.01.03

+ Recent posts