Autor Zpráva
deliQus
Profil
Zdravím, chci se zeptat proč mi toto nebere rss čtečka :-) - > http://osporeni.com/rss.php
Chamurappi
Profil
Reaguji na deliQa:
Protože tam je před RSS kousek HTML kódu:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<xml version="1.0" encoding="utf-8">
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
Trejpa
Profil
deliQus:
RSS má špatný MIME typ.
deliQus
Profil
Když tam není:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

Tak nejde diakritika :-(
deliQus
Profil
Nevíte proč ?
Trejpa
Profil
deliQus:
Co máš za problém nastavit v PHP MIME typ na "application/rss+xml"? Potom si čtečka vezme kódování z <?xml version="1.0" encoding="utf-8" ?> a máš po starostech.

Pokud vím, tak XML deklarace by měla být úplně na začátku XML dokumentu (máš tam odřádkování).
deliQus
Profil
Nevím, jak to myslíš. :-(
mckay
Profil
deliQus:
Než vygeneruješ cokoliv jiného, musíš v php, například pomocí hlaviček, určit MIME typ. Třeba takto:
<?php 
  header("Content-Type:  application/rss+xml"); #pokud to chápu správně
   ?>


A hned pod to napiš
<xml version="1.0" encoding="utf-8">
Trejpa
Profil
deliQus:
<?php
header("Content-Type: application/rss+xml");
?>

Děláš XML a neznáš základy. Prohlížeč (čtečka) pozná typ souboru podle MIME type, které zasílá server. Podle toho rozliší, zda je to stránka, obrázek, RSS nebo něco jiného a provede příslušnou akci (stránku a obrázek zobrazí, PDF pošle do pluginu, neznámé soubory nabídne ke stažení). A protože pro PHP koncovku mají servery obvykle nastaveno, že se má posílat jako HTML stránka ("text/html"), tak je nutné ji přetypovat na XML formát, ve kterém předpokládají soubory právě RSS čtečky.

Píše se to s otazníky. V PHP to budeš muset trošku zaonačit, aby se to nechápalo jako PHP příkaz.
<?xml version="1.0" encoding="utf-8" ?>
deliQus
Profil
Když tam dám
<?php
header("Content-Type: application/rss+xml");
?>


Tak se mi vypíše jen kód a diakritika přesto nejde.

Můj skript, který generuje rss:
<?php
  include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or die("Nelze se pripojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or die("Nelze vybrat databázi: ". mysql_error()); 
?>
<xml version="1.0" encoding="utf-8">
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>osporeni.com</title>
    <link>http://www.osporeni.com/</link>
    <webMaster>info@osporeni.com (Finanční portál)</webMaster>
    <category>finance, spoření, spořící účty, termínované účty, stavební spoření, penziní připojištění</category>
    <docs>http://backend.userland.com/rss</docs>
    <lastBuildDate><?php echo gmdate("D, d M Y H:i:s")." GMT"; ?></lastBuildDate>
    <atom:link href="http://www.osporeni.com/rss.php/" rel="self" type="application/rss+xml" />
    <image>
      <url>http://www.osporeni.com/graphics/mini_title.gif</url>
      <title>osporeni.com</title>
      <link>http://www.osporeni.com/</link>
    </image>
<?php
    $res = mysql_query("SELECT * FROM `clanky` order by id DESC");
    while($rec = mysql_fetch_array($res)) {
	
	?>
    <item>
      <title><?php echo $rec["nadpis"]; ?></title>
      <link>http://www.osporeni.com/clanky&amp;id=<?php echo $rec["id"]; ?>/</link>
      <guid>http://www.osporeni.com/clanky&amp;id=<?php echo $rec["id"]; ?>/</guid>
      <description><?php echo htmlspecialchars(strip_tags($rec["text"])); ?></description>
      <pubDate><?php echo $rec["datum"]; ?></pubDate>
    </item>
<?php
    }
?>
mckay
Profil
deliQus:
Kódování, soubor, databáze musí mít správně nastavené kódování. Zajisti, aby soubor byl na utf-8, to samé databáze i kód.
Trejpa
Profil
deliQus:
Takto nějak to máš zapsané a nefunguje to?
<?php
header("Content-Type: application/rss+xml");
include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or die("Nelze se pripojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or die("Nelze vybrat databázi: ". mysql_error()); 
?>


Pro správnou funkci tam ty otazníky prostě být musí.
<?xml version="1.0" encoding="utf-8"?>
Není to značka <xml>, ale procesní instrukce.
deliQus
Profil
to rss mi právě nějak nejde, vše je jinak v utf-8
deliQus
Profil
Parse error: syntax error, unexpected T_STRING in /var/www/web5/osporeni.com/osporeni.com/rss.php on line 7 ( to je <?xml version="1.0" encoding="utf-8"?> )
Trejpa
Profil
deliQus:
Tak ještě jednou a důrazně: V PHP to budeš muset trošku zaonačit, aby se to nechápalo jako PHP příkaz. Třeba to vypiš pomocí echo.
<?php echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>
deliQus
Profil
No, tak teď to dělá to co jsem říkal předtím, diakritika nejde, a vypíše se jen kód
Trejpa
Profil
deliQus:
Pořád máš na začátku mezeru a odřádkování.

Takto si to dej na úplný začátek toho souboru a bude to fungovat:
<?php
header("Content-Type: application/rss+xml");
echo '<?xml version="1.0" encoding="utf-8" ?>';
// ... ostatní PHP příkazy
// ... a potom zbytek dokumentu, pochopitelně bez xml deklarace
?>


Kromě napojení na databázi jsem to zkopíroval (výsledek) a funguje to (EDIT: opravena chyba v souboru, viz [#19]).
deliQus
Profil
V Mozille to vypadá, že to jde, v IE nejde nic, a v Google Chrome to vypíše jen kód a nejde diakritika
Trejpa
Profil
deliQus:
Měl jsi chybu v RSS, kterou jsem tam omylem také zkopíroval (neuzavření značek <channel> a <rss>). Teď to jede.

Firefox, IE, Opera a Safari zobrazí správně. Chrome RSS neumí (jen vypíše, například: www.novinky.cz/rss/).

Zkus si to třeba ze stránky.
deliQus
Profil
Tak jsem uzavřel rss a channel, a jde to :-) jen ten chrome zobrazí jen kód :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: