묻고답하기

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 남기남
지오426 가가채팅은 서버에 무리를 주지 않나요? [2] 2008.08.06 by Gnee
히피♬ 웹폰트를 설치했는데.,.  
JJEUYOSI 자바스크립트  
designoh 썸네일을 흑백으로 색상을 변경할 수도 있을까요? [2] 2008.08.07 by designoh
리노리 설치시에 다음과 같은 메세지가 나오고 진행이 안되는데 무엇이 문제인지...  
정낙훈(xynex) 제로보드 설치 경로를 변경하고 싶은데, [6] 2008.08.07 by 정낙훈(xynex)
dlqkkw FTP 파일 업로드시 에러가 납니다. [2] 2008.08.07 by 434
박순영146 메인화면에 달력을 넣었는데.. [2] 2008.08.07 by 박순영146
새하늘 비밀번호가 틀리다고 나와요. [1] 2008.08.07 by 백성찬
윤태정 외부로그인 시 권한이 없습니다 좀 없애주세요 [1] 2008.08.07 by 백성찬
지오426 평범한 백업과 마이그레이션을 통한 백업 [1] 2008.08.07 by 백성찬
변진수 페이지 생성시 최근이미지가 이상하게 동작합니다 [1] 2008.08.07 by 백성찬
초보자 URL 에 따라 언어 변경이 안되요...  
낭만홀리님 open id 접속자만 보이게 할 수 있나요? [3] 2008.08.07 by withover.com
VINA답답이 컴퓨터에 따라 화면이 백색으로... [6] file 2008.08.07 by vina답답이
이권묵 네이버검색순위 링크에서 한글이 깨져 나오는 이유가 뭘까요? file  
질풍조자룡 홈페이지가 움직이네요?? 홈페이지상단에 줄이 있는데 마우스로 이동가능하네요. [2] file 2008.08.07 by 질풍조자룡
공인 게시판 보임 관련 [5] 2008.08.07 by 공인
신아라 게시판 정렬이 이상합니다. [1] file 2008.08.07 by minkever
세팔이 ftp 업로드에 대하여 [3] 2008.08.07 by 세팔이
dglim96 확장자가 AVI인데 파일 첨부가 안됩니다/ [5] 2008.08.07 by 토니박스
형통 파일을 올려보니 이렇게 나옵니다.. [1] file 2008.08.07 by 백성찬
겨울소나기 페이지작성시 css를 작동하게 하려면 어떤 파일에 넣어야 하는지요? [1] 2008.08.07 by 이피지기
시애틀엘비스 [고수님들께 ]검색을 분류는 못하나요? [2] 2008.08.07 by 시애틀엘비스
눈도장 한국어 l select language 색상변경은 어디에서...? [2] 2008.08.07 by 눈도장
이교운 도와주세요!!!!  
김용호947 회원가입누르면 엉뚱한 곳으로가요 [5] file 2008.08.08 by 山水菊
이원형737 게시판에 첨부파일을 올릴수가 없네요!!! [2] file 2008.08.08 by 이원형737
zgzg rewrite_mod 해제가 안되요 ;; [2] 2008.08.08 by 덱스터
천원 준비물은 APM 하나만 있으면 되나요? [1] 2008.08.08 by 덱스터