테스트 사이트 - 개발 중인 베타 버전입니다

rss 작성 질문 입니다. 채택완료

나의이름 10개월 전 조회 1,245

 </p>

<p><?php</p>

<p>include_once('./common.php'); // 영카트5 공통 파일 포함</p>

<p> </p>

<p>header('Content-Type: application/rss+xml; charset=UTF-8');</p>

<p> </p>

<p>// RSS 헤더 작성</p>

<p>echo "<?xml version='1.0' encoding='UTF-8' ?>\n";</p>

<p>?></p>

<p><rss version="2.0"></p>

<p>  <channel></p>

<p>    <title>최신 콘텐츠 - <?php echo $config['cf_title']; ?></title></p>

<p>    <link><?php echo G5_URL; ?></link></p>

<p>    <description><?php echo $config['cf_title']; ?>의 최신 등록 콘텐츠</description></p>

<p>    <language>ko</language></p>

<p>    <pubDate><?php echo date('r'); ?></pubDate></p>

<p> </p>

<p>    <?php</p>

<p>    // 1. 상품 데이터 가져오기</p>

<p>    $sql = "SELECT it_id, it_name, it_time, it_price</p>

<p>            FROM {$g5['g5_shop_item_table']}</p>

<p>            WHERE it_use = 1</p>

<p>            ORDER BY it_time DESC</p>

<p>            LIMIT 20";</p>

<p>    $result = sql_query($sql);</p>

<p> </p>

<p>    while ($row = sql_fetch_array($result)) {</p>

<p>        $link = G5_SHOP_URL . '/item.php?it_id=' . $row['it_id']; // 상품 링크</p>

<p>        $pubDate = date('r', strtotime($row['it_time'])); // 등록/수정 시간</p>

<p>        ?></p>

<p>        <item></p>

<p>          <title><?php echo htmlspecialchars($row['it_name']); ?> - ₩<?php echo number_format($row['it_price']); ?></title></p>

<p>          <link><?php echo $link; ?></link></p>

<p>          <description>₩<?php echo number_format($row['it_price']); ?></description></p>

<p>          <pubDate><?php echo $pubDate; ?></pubDate></p>

<p>        </item></p>

<p>        <?php</p>

<p>    }</p>

<p> </p>

<p>    // 2. 게시판 데이터 가져오기</p>

<p>    $bo_table = 'gallery'; // 대상 게시판 테이블</p>

<p>    $sql = "SELECT wr_id, wr_subject, wr_datetime,wr_content</p>

<p>            FROM {$g5['write_prefix']}{$bo_table}</p>

<p>            WHERE wr_is_comment = 0</p>

<p>            ORDER BY wr_datetime DESC</p>

<p>            LIMIT 20";</p>

<p>    $result = sql_query($sql);</p>

<p> </p>

<p>    while ($row = sql_fetch_array($result)) {</p>

<p>        $link = G5_BBS_URL . '/board.php?bo_table=' . $bo_table . '&wr_id=' . $row['wr_id']; // 게시글 링크</p>

<p>        $pubDate = date('r', strtotime($row['wr_datetime'])); // 등록 시간</p>

<p>        ?></p>

<p>        <item></p>

<p>          <title><?php echo htmlspecialchars($row['wr_subject']); ?></title></p>

<p>          <link><?php echo $link; ?></link></p>

<p>          <description><![CDATA[<?php echo $row['wr_content']; ?>]]></description></p>

<p>          <pubDate><?php echo $pubDate; ?></pubDate></p>

<p>        </item></p>

<p>        <?php</p>

<p>    }</p>

<p>

 </p>

<p>    $bo_table = 'story'; // 대상 게시판 테이블</p>

<p>    $sql = "SELECT wr_id, wr_subject, wr_datetime, wr_content</p>

<p>            FROM {$g5['write_prefix']}{$bo_table}</p>

<p>            WHERE wr_is_comment = 0</p>

<p>            ORDER BY wr_datetime DESC</p>

<p>            LIMIT 20";</p>

<p>    $result = sql_query($sql);</p>

<p> </p>

<p>    while ($row = sql_fetch_array($result)) {</p>

<p>        $link = G5_BBS_URL . '/board.php?bo_table=' . $bo_table . '&wr_id=' . $row['wr_id']; // 게시글 링크</p>

<p>        $pubDate = date('r', strtotime($row['wr_datetime'])); // 등록 시간</p>

<p>        ?></p>

<p>        <item></p>

<p>          <title><?php echo htmlspecialchars($row['wr_subject']); ?></title></p>

<p>          <link><?php echo $link; ?></link></p>

<p>          <description><![CDATA[<?php echo $row['wr_content']; ?>]]></description></p>

<p>          <pubDate><?php echo $pubDate; ?></pubDate></p>

<p>        </item></p>

<p>        <?php</p>

<p>    }</p>

<p> </p>

<p>    ?></p>

<p>  </channel></p>

<p></rss></p>

<p> </p>

<p>

 

안녕하세요.

네이버에 등록하기 위해서 rss를 위와 같은 형식으로 만들고 등록을 하였는데

올바른 rss가 아니라면서 등록이 안되고 있습니다.

게시판 데이터 부분이 없으면 등록이 잘 되는 상태이고

url/rss.php를 하면 잘 나옵니다.

어느 부분이 문제일까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
R
10개월 전

기존코드

</p>

<p>SELECT wr_id, wr_subject, wr_datetime, wr_content</p>

<p>            FROM {$g5['write_prefix']}{$bo_table}</p>

<p>

변경처리

</p>

<p>SELECT wr_id, wr_subject, wr_datetime, SUBSTR(wr_content, 1, 255) AS wr_content</p>

<p>            FROM {$g5['write_prefix']}{$bo_table}</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

나의이름
10개월 전
그렇게 했는데도 안되고

<item>
<title><?php echo htmlspecialchars($row['wr_subject']); ?></title>
<link><?php echo $link; ?></link>
<description><![CDATA[<?php echo $row['wr_content']; ?>]]></description>
<pubDate><?php echo $pubDate; ?></pubDate>
</item> 이부분을 빼니까 되는데 이게 문제가 되는걸까요?

댓글을 작성하려면 로그인이 필요합니다.

나의이름
10개월 전

자문 자답이 되어버렸는데 

bbs/rss.php 가 있길래 거기보고 수정을 했는데 잘 되네요..

 

 </p>

<p><?php</p>

<p>include_once('./_common.php');</p>

<p> </p>

<p>// 특수문자 변환 함수</p>

<p>function specialchars_replace($str, $len=0) {</p>

<p>    if ($len) {</p>

<p>        $str = substr($str, 0, $len);</p>

<p>    }</p>

<p>    $str = str_replace(array("&", "<", ">"), array("&amp;", "&lt;", "&gt;"), $str);</p>

<p>    return $str;</p>

<p>}</p>

<p> </p>

<p>// 처리할 bo_table 배열 정의</p>

<p>$bo_tables = ['gallery', 'story'];</p>

<p> </p>

<p>header('Content-type: text/xml');</p>

<p>header('Cache-Control: no-cache, must-revalidate');</p>

<p>header('Pragma: no-cache');</p>

<p> </p>

<p>echo '<?xml version="1.0" encoding="utf-8" ?>'."\n";</p>

<p>echo '<rss version="2.0" xmlns:dc="<a href="http://purl.org/dc/elements/1.1/">'."\n";" target="_blank" rel="noopener noreferrer">http://purl.org/dc/elements/1.1/">'."\n";</a></p>

<p>echo '<channel>'."\n";</p>

<p> </p>

<p>// 게시판 데이터 처리</p>

<p>foreach ($bo_tables as $bo_table) {</p>

<p>    // 게시판 설정 조회</p>

<p>    $sql = " select gr_id, bo_subject, bo_page_rows, bo_read_level, bo_use_rss_view</p>

<p>             from {$g5['board_table']} where bo_table = '$bo_table' ";</p>

<p>    $row = sql_fetch($sql);</p>

<p> </p>

<p>    // 특수문자 변환 및 기본 설정</p>

<p>    $subj2 = specialchars_replace($row['bo_subject'], 255);</p>

<p>    $lines = $row['bo_page_rows'];</p>

<p> </p>

<p>    // 비회원 읽기 및 RSS 사용 여부 확인</p>

<p>    if ($row['bo_read_level'] >= 2 || !$row['bo_use_rss_view']) {</p>

<p>        continue; // 조건에 맞지 않으면 건너뜀</p>

<p>    }</p>

<p> </p>

<p>    // 그룹 제목 조회</p>

<p>    $sql = " select gr_subject from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";</p>

<p>    $gr_row = sql_fetch($sql);</p>

<p>    $subj1 = specialchars_replace($gr_row['gr_subject'], 255);</p>

<p> </p>

<p>    // RSS 헤더 정보 출력</p>

<p>    echo '<title>'.specialchars_replace($config['cf_title'].' &gt; '.$subj1.' &gt; '.$subj2).'</title>'."\n";</p>

<p>    echo '<link>'.specialchars_replace(get_pretty_url($bo_table)).'</link>'."\n";</p>

<p>    echo '<language>ko</language>'."\n";</p>

<p> </p>

<p>    // 게시글 조회 및 RSS 항목 생성</p>

<p>    $sql = " select wr_id, wr_subject, wr_content, wr_name, wr_datetime, wr_option</p>

<p>             from {$g5['write_prefix']}$bo_table</p>

<p>             where wr_is_comment = 0</p>

<p>             and wr_option not like '%secret%'</p>

<p>             order by wr_num, wr_reply limit 0, $lines ";</p>

<p>    $result = sql_query($sql);</p>

<p> </p>

<p>    for ($i=0; $row=sql_fetch_array($result); $i++) {</p>

<p>        $file = '';</p>

<p>        $html = strstr($row['wr_option'], 'html') ? 1 : 0;</p>

<p> </p>

<p>        if ($i === 0) {</p>

<p>            echo '<description>'.specialchars_replace($subj2).' ('.$row['wr_datetime'].')</description>'."\n";</p>

<p>        }</p>

<p> </p>

<p>        $date = substr($row['wr_datetime'], 0, 10)."T".substr($row['wr_datetime'], 11, 8)."+09:00";</p>

<p> </p>

<p>        echo '<item>'."\n";</p>

<p>        echo '<title>'.specialchars_replace($row['wr_subject']).'</title>'."\n";</p>

<p>        echo '<link>'.specialchars_replace(get_pretty_url($bo_table, $row['wr_id'])).'</link>'."\n";</p>

<p>        echo '<description><![CDATA['.$file.conv_content($row['wr_content'], $html).']]></description>'."\n";</p>

<p>        echo '<dc:creator>'.specialchars_replace($row['wr_name']).'</dc:creator>'."\n";</p>

<p>        echo '<dc:date>'.$date.'</dc:date>'."\n";</p>

<p>        echo '</item>'."\n";</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>// 상품 데이터 처리</p>

<p>echo '<!-- 상품 데이터 -->'."\n";</p>

<p>$sql = " SELECT it_id, it_name, it_time, it_price</p>

<p>            FROM {$g5['g5_shop_item_table']}</p>

<p>            WHERE it_use = 1</p>

<p>            ORDER BY it_time DESC</p>

<p>            LIMIT 20 ";</p>

<p>$result = sql_query($sql);</p>

<p> </p>

<p>while ($row = sql_fetch_array($result)) {</p>

<p>    $link = get_pretty_url('item', $row['it_id']);</p>

<p>    $date = substr($row['it_datetime'], 0, 10)."T".substr($row['it_datetime'], 11, 8)."+09:00";</p>

<p> </p>

<p>    echo '<item>'."\n";</p>

<p>    echo '<title>'.specialchars_replace($row['it_name']).'</title>'."\n";</p>

<p>    echo '<link>'.specialchars_replace($link).'</link>'."\n";</p>

<p>    echo '<description><![CDATA[가격: '.number_format($row['it_price']).'원]]></description>'."\n";</p>

<p>    echo '<dc:date>'.$date.'</dc:date>'."\n";</p>

<p>    echo '</item>'."\n";</p>

<p>}</p>

<p> </p>

<p>echo '</channel>'."\n";</p>

<p>echo '</rss>'."\n";</p>

<p>

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인