2010-04-19 3 views
1

무슨 일이 일어나고 있는지 이해하지 못하고 몇 달 동안 사이트를 변경하지 않았지만 갑자기 RSS 피드가 더 이상 작동하지 않습니다.맞춤 RSS 피드가 갑자기 더 이상 작동하지 않습니다.

는 다음 코드와 PHP 파일을 만듭니다

header('Content-type: text/xml'); 
include("config/config.inc.php"); 

    $result = mysqli_query($link, "SELECT * FROM tutorials ORDER BY tutorial_id DESC LIMIT 50"); 
?> 
<rss version="2.0"> 
    <channel> 
     <title>CMS tutorial site</title> 
     <description>Bringing you the best CMS tutorials from the web</description> 
     <link>http://cmstutorials.org</link> 
     <?php 
     while($row = mysqli_fetch_object($result)) 
     { 
      $user = mysqli_fetch_object(mysqli_query($link, "SELECT * FROM user_extra WHERE userid=".$row->user_id."")); 
      ?> 
      <item> 
       <title><?php echo $row->title; ?></title> 
       <author><?php echo $user->username; ?></author> 
       <description><?php echo $row->description; ?></description> 
       <pubDate><?php echo $row->date; ?></pubDate> 
       <link>http://cmstutorials.org/view_tutorial.php?tutorial_id=<?php echo $row->tutorial_id; ?></link> 
      </item> 
      <?php 
     } 
     ?> 
    </channel> 
</rss> 

나는 phpMyAdmin에 그것을 실행하여 쿼리를 확인하고이 오류를 제공하지 않습니다 작동합니다. 내가 헤더 콘텐츠 형식을 삭제하고 RSS 태그를 할 때이 http://cmstutorials.org/rss (또는 http://cmstutorials.org/rss.php)

답변

1

파일은 유효한 UTF-8이지만 유효한 XML이 아닙니다. 나는 당신이 아마도 htmlentities 함수를 통해 모든 데이터를 전달할 필요가 있다고 생각합니다.

<title><?php echo htmlentities($row->title,ENT_QUOTES,"utf-8"); ?></title> 
<author><?php echo htmlentities($row->username,ENT_QUOTES,"utf-8"); ?></author> 
<description><?php echo htmlentities($row->description,ENT_QUOTES,"utf-8"); ?></description> 
<pubDate><?php echo htmlentities($row->date,ENT_QUOTES,"utf-8"); ?></pubDate> 

문제가 해결되지 않으면, "CP1252"또는 "ISO-8859-1"같은 다른 인코딩에 "UTF-8"을 변경해보십시오.

+0

아니요, 유효한 UTF-8이 아닙니다. 적어도 하나의 문자가 손상되었습니다. 게다가, XML 출력에서'htmlentities'를 절대 사용하지 마십시오. 일반 UTF-8 문자를 사용하거나 CDATA 태그의 데이터를 래핑하십시오. –

+0

팁 주셔서 감사합니다. 현재 사이트를 codeigniter 프레임 워크로 변환하려고합니다.이 모든 것이 수정되어야합니다. Pekka가 임시 수정으로 권장하지 않는다고하더라도 위의 코드를 사용했습니다. – Christophe

4

충분히 재미있게 피드의 링크입니다 그것은 쿼리에서 각 행을 출력하지만 공급은 아무것도

를 표시하지 않습니다 , IE8은 파이어 폭스가 변경 사항에 대해 아무 말도하지 않는 경우 자세한 오류 메시지를 표시합니다. 그것은 열 (32)

<description>We 

이 있습니다 99.9999 % 인코딩 문제, 229 라인에 포인트 "이 피드가 오류로 인해 표시 할 수 없습니다"라고. (유효성 검사기는 UTF-8이 아닌 문자에 대해 불평합니다.) 대부분의 경우 데이터베이스 내용이 utf-8과 다른 문자 집합으로 저장되어 있습니다.

validator을 통해 피드를 실행하는 자세한 정보를 얻을 수 있습니다.

+0

오, 나는 IE에서 생각해 본 적이 없지만 인코딩 문제가 있기 때문에 100 % 가능하다고 -> http://cmstutorials.org/ 설명을 확인하십시오. 작은 사각형이 있습니다. 나는 데이터베이스를 utf8-unicode로 설정했다. 내가 데이터베이스에 추가 한 내용은 RSS 피드에서 가져온 것입니다. – Christophe

+0

들어오는 RSS 피드를 UTF8로 다시 인코딩하려고했지만 여전히 문제가있는 것 같습니다. 몇 가지 필터를 사용하여 특별 따옴표를 일반 utf8 표준 따옴표로 변경합니다. 또는 그와 비슷한 것 – Christophe

+0

방금 ​​rss 검사기가 내 생명을 구했어. 고마워 +1! 나는 항상 html과 css validator를 사용하지만 rss에 대해서는 하나도 깨닫지 못했다. – Iznogood

관련 문제