Editeur flux rss 2 via un formulaire

Soyez le premier à donner votre avis sur cette source.

Vue 9 971 fois - Téléchargée 701 fois

Description

Script pour créer facilement un fichier rss 2.00 sur son serveur, via un formulaire.
La méthode pour le réaliser n'est certainement pas la meilleure, mais ca fonctionne.
(Certains diront certainemetnt d'utiliser des classes).
Je suis nul en php donc je fais comme je peux (certaines parties de ce code ont été réalisé par un ami).

Installation :
- Copier le répertoire 'editeur_rss' sur votre site.
- Ouvrer le fichier 'enregistrer_donnees.php' et modifier les lignes 6 à 12 avec vos informations.
- Lancer la page 'editer_news.php'.

N'oubliez pas de mettre le fichier 'rss.xml' en CHMOD 666.

Source / Exemple :


Page 'editer_news.php' :

<html>
<head>
<title>Editeur RSS</title>

<link rel="stylesheet" href="style_pages.css" type="text/css">

<body style="text-align: center">
<h1 align="center">Publications de news</h1>
<p align="center">&nbsp;</p>
<table border="0">
  <form name="formulaire" action="enregistrer_donnees.php" method="POST" enctype="multipart/form-data">
	    
	  <tr> 
      <td width="231" align="center">
		<h3>Titre de votre news</h3>
		</td>
      <td width="317" align="center"><input type="text" name="titre" size="72"></td>
    </tr>
    <tr> 
      <td align="center">
		<h3>Votre message</h3>
		<h3>&nbsp;</h3>
		<h3>&nbsp;</h3>
		</td>
      <td align="center"><textarea rows="9" name="description" cols="55"></textarea></td>
    </tr>
    	<tr>
      <td width="231" align="center">
		<h3>Lien</h3>
		</td>
      <td width="317" align="center">
		<input type="text" name="linkarticle" value="http://" size="72" size="45"></td>
    	</tr>
    <tr> 
      <td align="center">
		&nbsp;</td>
      <td align="center">&nbsp;</td>
    </tr>
    	<tr>
      <td width="231" align="center">
		<h3>Posté par</h3>
		</td>
      <td width="317" align="center"><input type="text" name="auteur" size="72"></td>
    	</tr>
    <tr> 
      <td align="center">&nbsp;</td>
      <td align="center">&nbsp;</td>
    </tr>
    <tr> 
      <td align="center">
		<h3>Jour de publication</h3>
		</td>
      <td align="center">
	  <select name="day">
          <option value="Mon, ">Lundi</option>
          <option value="Tue, ">Mardi</option>
          <option value="Wed, ">Mercredi</option>
          <option value="Thu, ">Jeudi</option>
          <option value="Fri, ">Vendredi</option>
          <option value="Sat, ">Samedi</option>
          <option value="Sun, ">Dimanche</option>
        </select>&nbsp;&nbsp;&nbsp;
	  <select name="jour">
          <option value="01 ">01</option>
          <option value="02 ">02</option>
          <option value="03 ">03</option>
          <option value="04 ">04</option>
          <option value="05 ">05</option>
          <option value="06 ">06</option>
          <option value="07 ">07</option>
          <option value="08 ">08</option>
          <option value="09 ">09</option>
          <option value="10 ">10</option>
          <option value="11 ">11</option>
          <option value="12 ">12</option>
          <option value="13 ">13</option>
          <option value="14 ">14</option>
          <option value="15 ">15</option>
          <option value="16 ">16</option>
          <option value="17 ">17</option>
          <option value="18 ">18</option>
          <option value="19 ">19</option>
          <option value="20 ">20</option>
          <option value="21 ">21</option>
          <option value="22 ">22</option>
          <option value="23 ">23</option>
          <option value="24 ">24</option>
          <option value="25 ">25</option>
          <option value="26 ">26</option>
          <option value="27 ">27</option>
          <option value="28 ">28</option>
          <option value="29 ">29</option>
          <option value="30 ">30</option>
          <option value="31 ">31</option>
        </select>&nbsp;&nbsp;&nbsp; <select name="mois">
          <option value="Jan ">Janvier</option>
          <option value="Feb ">Février</option>
          <option value="Mar ">Mars</option>
          <option value="Apr ">Avril</option>
          <option value="May ">Mai</option>
          <option value="Mar ">Juin</option>
          <option value="Jul ">Juillet</option>
          <option value="Aug ">Août</option>
          <option value="Sep ">Septembre</option>
          <option value="Oct ">Octobre</option>
          <option value="Nov ">Novembre</option>
          <option value="Dec ">Décembre</option>
        </select>&nbsp;&nbsp;&nbsp; <select name="annee">
          <option value="2007 ">2007</option>
          <option value="2008 ">2008</option>
          <option value="2009 ">2009</option>
          <option value="2010 ">2010</option>
          <option value="2011 ">2011</option>
          <option value="2012 ">2012</option>
          <option value="2013 ">2013</option>
          <option value="2014 ">2014</option>
          <option value="2015 ">2015</option>
          <option value="2016 ">2016</option>
          <option value="2017 ">2017</option>
          <option value="2018 ">2018</option>
          <option value="2019 ">2019</option>
          <option value="2020 ">2020</option>
          <option value="2021 ">2021</option>
          <option value="2022 ">2022</option>
          <option value="2023 ">2023</option>
          <option value="2024 ">2024</option>
          <option value="2025 ">2025</option>
          <option value="2026 ">2012</option>
          <option value="2027 ">2013</option>
          <option value="2028 ">2014</option>
          <option value="2029 ">2015</option>
          <option value="2030 ">2016</option>
          <option value="2031 ">2031</option>
          <option value="2032 ">2032</option>
          <option value="2033 ">2033</option>
          <option value="2034 ">2034</option>
          <option value="2035 ">2035</option>
          <option value="2036 ">2036</option>
          <option value="2037 ">2037</option>
          <option value="2038 ">2038</option>
          <option value="2039 ">2039</option>
          <option value="2040 ">2040</option>
          <option value="2041 ">2041</option>
          <option value="2042 ">2042</option>
          <option value="2043 ">2043</option>
          <option value="2044 ">2044</option>
          <option value="2045 ">2045</option>
          <option value="2046 ">2046</option>
          <option value="2047 ">2047</option>
          <option value="2048 ">2048</option>
          <option value="2049 ">2049</option>
          <option value="2050 ">2050</option>
        </select></td>
    </tr>
    <tr> 
      <td align="center">
		<h3>Heure de publication</h3>
		</td>
      <td align="center">
	    <select name="heure">
          <option value="00">00</option>
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
          <option value="18">18</option>
          <option value="19">19</option>
          <option value="20">20</option>
          <option value="21">21</option>
          <option value="22">22</option>
          <option value="23">23</option>
        </select> heures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <select name="minutes">
          <option value="00">00</option>
          <option value="05">05</option>
          <option value="10">10</option>
          <option value="15">15</option>
          <option value="20">20</option>
          <option value="25">25</option>
          <option value="30">30</option>
          <option value="35">35</option>
          <option value="40">40</option>
          <option value="45">45</option>
          <option value="50">10</option>
          <option value="55">55</option>
        </select> minutes</td>
    </tr>
    <tr> 
      <td colspan="2" align="center">&nbsp;<p><input type="submit" value="Prévisualiser"></td>
    </tr>
  </form>
</table>
</body>
</html>

Page  'enregistrer_donnees.php' :
<?
// Configuration
$cfg['file_to_edit'] = "rss.xml";
$cfg['page_retour'] = "editer_news.php";

$titresite = "Nom de votre site" ;
$linksite = "http://www.mosnite.com" ;
$descriptionsite = "Description de votre site." ;
$langue = "fr" ;
$copyright = "Copyright VOUS" ;
$titreimage = "Nom IMAGE RSS" ;
$urlimage = "http://www.monsite.com/icone_rss.gif" ;

$titre = stripslashes($_POST['titre']) ;
$description = stripslashes($_POST['description']) ;
$linkarticle = $_POST['linkarticle'] ;
$minutes = $_POST['minutes'] ;
$day = $_POST['day'] ;
$auteur = $_POST['auteur'] ;
$jour = $_POST['jour'] ;
$mois = $_POST['mois'] ;
$annee = $_POST['annee'] ;
$heure = $_POST['heure'] ;
$minutes = $_POST['minutes'] ;
$secondes = ":00" ;

$text = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
$text .= "<rss version=\"2.0\">\n";
$text .= "<channel>\n";
$text .= "<title>".$titresite."</title>\n";
$text .= "<link>".$linksite."</link>\n";
$text .= "<description>".$descriptionsite."</description> \n";
$text .= "<language>".$langue."</language> \n";
$text .= "<copyright>".$copyright."</copyright>\n";
$text .= "<image>\n";
$text .= "<title>".$titreimage."</title>\n";
$text .= "<url>".$urlimage."</url>\n";
$text .= "<link>".$linksite."</link>\n";
$text .= "</image>\n";
$text .= "<item>\n";

$text .= "<title>".$titre."";
$text .= " - Posté à ";
$text .= "$heure";
$text .= ":$minutes";
$text .= " Le ";
$text .= "$jour";
$text .= "$mois";
$text .= " Par ";
$text .= "$auteur";
$text .= "</title>\n";

$text .= "<link>".$linkarticle."</link>\n";
$text .= "<pubDate>".$day."$jour";
$text .= "$mois";
$text .= "$annee";
$text .= "$heure";
$text .= ":$minutes";
$text .= "$secondes";
$text .= " +0100</pubDate>\n";
$text .= "<description>".$description."</description>\n";
$text .= "</item>\n";
$text .= "</channel>\n";
$text .= "</rss>\n";

$handle = fopen($cfg['file_to_edit'],"w");
fwrite($handle, stripslashes($text));
echo "<div align=\"center\">";
echo "<a href=\"".$cfg['page_retour']."\">Retour</a>";
echo "</div>";

?>

Exemple fichier 'rss.xml' créé :

<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
<title>Nom de votre site</title>
<link>http://www.mosnite.com</link>
<description>Description de votre site.</description> 
<language>fr</language> 
<copyright>Copyright VOUS</copyright>
<image>
<title>Nom IMAGE RSS</title>
<url>http://www.monsite.com/icone_rss.gif</url>
<link>http://www.monsite.com</link>
</image>
<item>
<title>htrh - Posté à 00:00 Le 01 Jan  Par trhetrh</title>
<link>http://</link>
<pubDate>Mon, 01 Jan 2007 00:00:00 +0100</pubDate>
<description>votre message</description>
</item>
</channel>
</rss>

Conclusion :


Merci à l'aide de mon pote pour ce script.

Tous les commentaires seront les bienvenues.

Il est aussi facilement possible d'ajouter un mot de passe pour restreindre l'accès à la page d'édition.

A noter qu'il est possible de créer qu'un seul 'item'.
Néanmoins, il est possible de modifier facilement le code pour en créer d'autres.

Bonne utilisation.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

kincalvin
Messages postés
2
Date d'inscription
vendredi 14 mars 2008
Statut
Membre
Dernière intervention
20 novembre 2009
-
apprends à coder.
kiwi1nut
Messages postés
29
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
13 mars 2008
-
ok sur la base de la source teste ça. (je te le dis j'ai pas le temps de la tester)

a la place de
# $handle = fopen($cfg['file_to_edit'],"w");
# fwrite($handle, stripslashes($text));

essaie
$path= cfg['file_to_edit'];

if(file_exists($path']))
{
$handle = fopen($path,"r");
$content = file($path);
fclose($handle);
}
$handle = fopen($path,"w");
for($i=0;$i < count($content); $i++)
{
if(($content[$i] != "")&&($content[$i] != "\r\n"))
fwrite($handle,$content[$i]);
}
$str_out = stripslashes($text);
fwrite($handle,$str_out);
fclose($handle);

voilà comme je te l'ai dis je sais pas si ça marche mais c'est la base de solution de ton pb
A++++
cs_gasty
Messages postés
5
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
31 janvier 2010
-
Bonjour KIWI

Pourquoi r+, mais parce que w+ efface tout.

debutRSS contient "text1" fin RSS contient "text2" et flux RSS contient l'ensemble des entrées du formulaire soit "text".
fluxRSS2 est le fichier final. C'est à dire debutRSS + fluxRSS + finRSS.
Hors, debutRSS m'écrase fluxRSS sur le nombre de caractères qu'il contient provoquant une erreur. J'ai trouvé comme solution de mettre l'équivalent en espace au debut de fluxRSS afin de résoudre le problème mais je pense qu'il y a mieux. Oui! Je sais ton bout de code... mais pour finir ce programme que je pense interessant et à l'auteur dont je lui suggere d'en faire une version N°2 avec ce complèment car je suis sûr qu'un bon nombres peuvent etre interessés par la simplicité d'installation. Et de conserver l'ensemble des entrées du formulaire sans un effacement systematique des précedentes.
kiwi1nut
Messages postés
29
Date d'inscription
mercredi 25 janvier 2006
Statut
Membre
Dernière intervention
13 mars 2008
-
pourquoi r+???
c'est w+...
Mais franchement si tu veux un bon flux rss il y a des super script qui utilisent mysql sur codes sources. Là je reconnais que ce code est vraiment galère...
Bref dans ton code c'est vraiment le bazar...pourquoi tu mets $text1?
et c'est quoi debutrss et fin rss?? et pourquoi $handle11 puis $handle22??
Désolé mais ton code c'est du charabia...

regarde ce que j'avais déjà posté
$xml = '<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">';
$xml .= '<channel>';
$xml .= '<title>ton titre</title>';
$xml .= '<link>url de ton site</link>';
$xml .= '<description>description de ton site</description>';
$xml .= '<copyright>© ton site</copyright>';
$xml .= '<language>fr</language>';

ensuite tu te connecte a ta base
et tu extraits
while($row= mysql_fetch_array($res)){
$titre=$row["tag"];
$adresse=$row["url"];
$contenu=$row["titre"];
$mydate=$row["date"];
$datephp=date("D, d M Y H:i:s +0100", strtotime($mydate));

$xml .= '';
$xml .= '<title>'.$titre.'</title>';
$xml .= '<link>'.$adresse.'</link>';
$xml .= ''.$datephp.'

';
$xml .= '<description>'.$titre.'</description>';
$xml .= '';
}

$xml .= '</channel>';
$xml .= '</rss>';

$fp = fopen("fluxrss.xml", 'w+');
fputs($fp, $xml);
fclose($fp);

si tu as base de db tu changes les variables par celle mises dans la source...
cs_gasty
Messages postés
5
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
31 janvier 2010
-
Voici ou j'en suis.

<?php
// Configuration
unlink("fluxRSS2.xml"); // supprime fichier

$cfg = "fluxRSS.xml"; // fluxRSS de transition
$cfg1 = "fluxRSS2.xml";// fluxRSS2 l'original de fin
$cfg2 = "editer_RSS.php";
//****************************
$cfg11= "debutRSS.xml";
$cfg22= "finRSS.xml";
//*****************************

$titresite = "GastyVox" ;
$linksite = "http://agastine.club.fr/WebRueduGastyVox2/index.htm" ;
$descriptionsite = "Le bistrot à Gasty" ;
$langue = "fr" ;
$copyright = "Copyright ASGSYSTM" ;
$titreimage = "Nom IMAGE RSS" ;
$urlimage = "http://agastine.club.fr/WebRueduGastyVox2/minigasty.jpg" ;
$xml = "<?xml version="1.0" encoding="ISO-8859-1" ?>";

$titre = stripslashes($_POST['titre']) ;
$description = stripslashes($_POST['description']) ;
$linkarticle = $_POST['linkarticle'] ;
$minutes = $_POST['minutes'] ;
$day = $_POST['day'] ;
$auteur = $_POST['auteur'] ;
$jour = $_POST['jour'] ;
$mois = $_POST['mois'] ;
$annee = $_POST['annee'] ;
$heure = $_POST['heure'] ;
$minutes = $_POST['minutes'] ;
$secondes = ":00" ;
//*********************************************************
$text1 = "<?xml version="1.0" encoding="utf-8" ?>\n";
$text1 .= "<rss version="2.0">\n";
$text1 .= "<channel>\n";
$text1 .= "<title>".$titresite."</title>\n";
$text1 .= "<link>".$linksite."</link>\n";
$text1 .= "<description>".$descriptionsite."</description> \n";
//***************************************************************
$text = "\n";
$text .= "<title>".$titre."";
$text .= " - Posté à ";
$text .= "$heure";
$text .= ":$minutes";
$text .= " Le ";
$text .= "$jour";
$text .= "$mois";
$text .= " Par ";
$text .= "$auteur";
$text .= "</title>\n";
$text .= "<link>".$linkarticle."</link>\n";
$text .= "".$day."$jour";
$text .= "$mois";
$text .= "$annee";
$text .= "$heure";
$text .= ":$minutes";
$text .= "$secondes";
$text .= " +0100

\n";
$text .= "<description>".$description."</description>\n";
$text .= "\n";
//***************************************************
$text2 = "</channel>\n";
$text2 .= "</rss>\n";
//****************************************************
$handle = fopen($cfg,"a+"); // fluxRSS de transition
fwrite ($handle, stripslashes($text));
fclose($handle);
//******************************************************
$file = 'fluxRSS.xml';
$newfile = 'debutRSS.xml';

if (!copy($file, $newfile)) {
echo "La copie du fichier $file n'a pas réussi...\n";
}
//-------------------------------------------------
$handle11 = fopen($cfg11,"r+"); // debutRSS
fseek($handle11,-255,SEEK_CUR);

fwrite($handle11, stripslashes($text1));
fclose($handle11);
//******************************************************
$file = 'debutRSS.xml';
$newfile = 'finRSS.xml';

if (!copy($file, $newfile)) {
echo "La copie du fichier $file n'a pas réussi...\n";
}

$handle22 = fopen($cfg22,"a+"); // finRSS
fwrite ($handle22, stripslashes($text2));
fclose($handle22);
//******************************************************
$file = 'finRSS.xml';
$newfile = 'fluxRSS2.xml';

if (!copy($file, $newfile)) {
echo "La copie du fichier $file n'a pas réussi...\n";
}
//*************************************************
unlink("debutRSS.xml");
unlink("finRSS.xml");
//*****************************************************

echo "
";
echo "Retour";
echo "
";

?>

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.