묻고답하기

xe1.0.5 사용자입니다.

Top 10 네이버 검색어 순위를 보여주는 위젯 프로그램을 아래에서 다운받아 그리고 제 홈피에 설치하였습니다.
http://www.zeroboard.com/16720158

naver에서 Open API 등록키를 발급받았구요^^
widgets/rank_nexearch/rank_nexearch.class.php 파일에서
widgets/rank_nexearch/skins/ajax/nexearch.class.php 파일에서 
naver에서 발급받은 Open API 등록키를 넣어 주었습니다.
그리고 아래 그림과 같이 생성코드를 주었습니다.




구현된 페이지에서의 이미지는 아래와 같습니다.



문제는 1위에 랭크된 황재원이란 곳을 마우스오버 하면 아래와 같은 url이 표시됩니다.
http://search.naver.com/search.naver?where=nexearch&query=황재원&x=0&y=0&frm=t1

이어서 클릭하면 아래와 같이 나옵니다.



즉, 깨져서 나옵니다.
 
그리하여 http://search.naver.com/search.naver?where=nexearch&query=황재원&x=0&y=0&frm=t1를 주소창에서 복사하여
따로 다른 페이지에서 입력하면 정상적으로 나오는 것입니다.



무엇이 문제일까요?

아래, widgets/rank_nexearch/rank_nexearch.class.php 코드를 붙여 보았습니다.

<?php
    /**
     * @class rank_nexearch
     * @author Simulz (k10206@naver.com)
     * @brief 실시간 검색어
     **/

    class rank_nexearch extends WidgetHandler {
        /**
         * @brief 위젯의 실행 부분
         *
         * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다
         * 결과를 만든후 print가 아니라 return 해주어야 한다
         **/
        function proc($args) {
            // 위젯 자체적으로 설정한 변수들을 체크
            $title = $args->title;
            $query = $args->query;
            $target = (in_array($query, array("nexearch", "cafeblog", "dic", "image", "kin", "music", "video", "webkr", "news"))) ? "rank" : "ranktheme";
           
            $APIkey = "등록키";//네이버 OpenAPI 등록키

            $URL_parsed = parse_url("http://openapi.naver.com/search?key=".$APIkey."&query=".$query."&target=".$target);

            $host = $URL_parsed["host"];
            $port = $URL_parsed["port"];

            if ($port == 0) $port = 80;

            $path = $URL_parsed["path"];

            if ($URL_parsed["query"] != "") $path .= "?".$URL_parsed["query"];

            $out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";

            $fp = fsockopen($host, $port, $errno, $errstr, 30);
            if(!$fp) return new Object(-1, 'msg_fail_to_socket_open');
           
            fputs($fp, $out);

            $buff = ''+ '+ ';

            while (!feof($fp)) {
                $str = fgets($fp, 128);
                if ( $start ) $buff .= $str;
                if ( $str == "\r\n" ) $start = true;
            }

            fclose($fp);

            $buff = str_replace('<?xml version="1.0" encoding="UTF-8" ?>', '', $buff);

            $oXmlParser = new XmlParser();
            $xml_doc = $oXmlParser->parse($buff);

            $item = $xml_doc->result->item;

            for($i = 1; $i <= 10; $i++) {
                unset($items);
                $items->k = $item->{'+ 'r'.$i}->k->body;
                $items->s = $item->{'r'.$i}->s->body;
                $items->v = $item->{'r'.$i}->v->body;
               
                $items->href = "http://search.naver.com/search.naver?where=nexearch&query=".urlencode($items->k)."&x=0&y=0&frm=t1";

                $rank_list[$i] = $items;
            }

            $widget_info->rank_list = $rank_list;
            $widget_info->title = $title;

            Context::set('widget_info', $widget_info);

            // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
            $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
            Context::set('colorset', $args->colorset);

            // 템플릿 컴파일
            $oTemplate = &TemplateHandler::getInstance();
            $output = $oTemplate->compile($tpl_path, 'list');
            return $output;
        }
    }
?>

그리고 widgets/rank_nexearch/skins/ajax/nexearch.class.php 를 붙여봅니다.

<?php
/****************************************************************
먼저 네이버의 OpenAPI 사용 등록 후 인증키를 받으셔야 합니다.
http://openapi.naver.com/
위의 주소로 가셔서, API 이용등록 하시면 발급됩니다.

하단의 23 ~ 46번 줄을 수정하시면 디자인 변경이 가능합니다.
단, 한글은 입력하지 마세요.

라이센스 같은 건 없고, 소스 수정 및 배포도 자유입니다.
단, 문제 발생 시 책임은 사용자에게 있습니다.
*****************************************************************/
$APIkey = "등록키";//네이버 OpenAPI 등록키

$content = get_url_fsockopen("http://openapi.naver.com/search?key=$APIkey&query=nexearch&target=rank");

$content = str_replace(" ","",$content);
$content = str_replace("\n","",$content);

$trans = array (
     "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" => "",
     " " => "",
     "<result>" => "<table width='100%' border='0' cellspacing='0' cellpadding='0'>",
     "<item>" => "",
     "<R1>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime01.gif'> ",
     "<R2>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime02.gif'>  ",
     "<R3>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime03.gif'>  ",
     "<R4>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime04.gif'> ",
     "<R5>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime05.gif'> ",
     "<R6>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime06.gif'> ",
     "<R7>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime07.gif'> ",
     "<R8>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime08.gif'> ",
     "<R9>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime09.gif'> ",
     "<R10>" => "<tr><td><img src='http://sstatic.naver.com/search/images10/num_realtime10.gif'> ",
     "</R1>" => "</td></tr>",
     "</R2>" => "</td></tr>",
     "</R3>" => "</td></tr>",
     "</R4>" => "</td></tr>",
     "</R5>" => "</td></tr>",
     "</R6>" => "</td></tr>",
     "</R7>" => "</td></tr>",
     "</R8>" => "</td></tr>",
     "</R9>" => "</td></tr>",
     "</R10>" => "</td></tr>",
     "<item>" => "",
     "</result>" => "</table>",
     "</K>" => ""
    );
$content = strtr($content, $trans);

$search = array ('/<K>(.[^ \n\<\"\']+)/',
        '@<S>.*?</S>@si',
        '@<V>.*?</V>@si');

$replace = array ('<a href=http://search.naver.com/search.naver?where=nexearch&query=\\1&x=0&y=0&frm=t1 target=_blank class=jung10><strong>\\1<strong /></a>','','');

$content = preg_replace($search, $replace, $content);

if($utf8) echo $content;
else echo iconv('UTF-8', 'EUC-KR', $content);//iconv 함수가 지원하지 않는다면, charset=UTF-8 으로 선언해 주셔야 한글이 안깨집니다.
echo date("Y-m-d H:i:s");

function get_url_fsockopen($url) {
    $URL_parsed = parse_url($url);

    $host = $URL_parsed["host"];
    $port = $URL_parsed["port"];

    if ($port == 0)
        $port = 80;

    $path = $URL_parsed["path"];

    if ($URL_parsed["query"] != "")
        $path .= "?".$URL_parsed["query"];

    $out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";

    $fp = fsockopen($host, $port, $errno, $errstr, 30);
    if (!$fp)
  {
      echo "$errstr ($errno)<br>\n";
    }
  else
  {
        fputs($fp, $out);
        $body = false;

        while (!feof($fp))
    {
            $s = fgets($fp, 128);
            if ( $body )
                $in .= $s;
            if ( $s == "\r\n" )
                $body = true;
        }

        fclose($fp);

        return $in;        // string으로 받고싶을땐...
    }
}
?>

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
이용탁783 회원가입폼을 팝업으로 만들려면? [1] 2008.08.08 by cocorun
designoh 본문삽입 slide_gallery에서 썸네일을 크롭된 상태로 출력하거나 비율대로 줄일 수 있을까요? [2] 2008.08.08 by designoh
이피지기 외부 페이지에 스크립트 작성시 문제  
김상환355 외부 이미지 url로 사용시 썸네일 문제 [2] 2008.08.08 by 김상환355
menkind0 최근 포럼형 웹진에 대한 질문이요 [2] file 2008.08.08 by menkind0
챠드 게시판 내용의 글자색변경문제 [2] 2008.08.08 by 챠드
곰실 완전 초보.. 도와주세요..(레이아웃 바꾸기) [1] 2008.08.08 by 명령핸들러
천원 준비물은 APM 하나만 있으면 되나요? [1] 2008.08.08 by 덱스터
zgzg rewrite_mod 해제가 안되요 ;; [2] 2008.08.08 by 덱스터
이원형737 게시판에 첨부파일을 올릴수가 없네요!!! [2] file 2008.08.08 by 이원형737
김용호947 회원가입누르면 엉뚱한 곳으로가요 [5] file 2008.08.08 by 山水菊
이교운 도와주세요!!!!  
눈도장 한국어 l select language 색상변경은 어디에서...? [2] 2008.08.07 by 눈도장
시애틀엘비스 [고수님들께 ]검색을 분류는 못하나요? [2] 2008.08.07 by 시애틀엘비스
겨울소나기 페이지작성시 css를 작동하게 하려면 어떤 파일에 넣어야 하는지요? [1] 2008.08.07 by 이피지기
형통 파일을 올려보니 이렇게 나옵니다.. [1] file 2008.08.07 by 백성찬
dglim96 확장자가 AVI인데 파일 첨부가 안됩니다/ [5] 2008.08.07 by 토니박스
세팔이 ftp 업로드에 대하여 [3] 2008.08.07 by 세팔이
신아라 게시판 정렬이 이상합니다. [1] file 2008.08.07 by minkever
공인 게시판 보임 관련 [5] 2008.08.07 by 공인
질풍조자룡 홈페이지가 움직이네요?? 홈페이지상단에 줄이 있는데 마우스로 이동가능하네요. [2] file 2008.08.07 by 질풍조자룡
이권묵 네이버검색순위 링크에서 한글이 깨져 나오는 이유가 뭘까요? file  
VINA답답이 컴퓨터에 따라 화면이 백색으로... [6] file 2008.08.07 by vina답답이
낭만홀리님 open id 접속자만 보이게 할 수 있나요? [3] 2008.08.07 by withover.com
초보자 URL 에 따라 언어 변경이 안되요...  
변진수 페이지 생성시 최근이미지가 이상하게 동작합니다 [1] 2008.08.07 by 백성찬
지오426 평범한 백업과 마이그레이션을 통한 백업 [1] 2008.08.07 by 백성찬
윤태정 외부로그인 시 권한이 없습니다 좀 없애주세요 [1] 2008.08.07 by 백성찬
새하늘 비밀번호가 틀리다고 나와요. [1] 2008.08.07 by 백성찬
박순영146 메인화면에 달력을 넣었는데.. [2] 2008.08.07 by 박순영146