Accueil Boite à Outils Syndication de contenu Création à distance d’un fichier de syndication

Publié le : 4 décembre 2005
Imprimer Imprimer cet article

Auteur :
Alain Sichel †

Alain Sichel
Création à distance d’un fichier de syndication

Cet article présente un script PHP pour envoyer à distance (par FTP sur un autre serveur) des fichiers RSS ou Atom.

 

 Je n’ai pas le PHP...

Si la lecture de La syndication de contenu RSS vous a convaincu, vous êtes décidé à éditer un (ou plusieurs) fichier(s) de syndication sur votre site.

Malheureusement, votre site n’utilise pas SPIP, ni un autre CMS qui crée automatiquement ces fichiers RSS ou Atom.

Bien sûr, il y a Editer plusieurs fichiers de syndication 1/3, 2/3 et 3/3, mais si votre hébergement ne permet pas le PHP, que faire ?

Sûrement changer d’hébergement smiley mais ce n’est pas le sujet de cet article, alors, je vais plutôt vous proposer une actuce pour contourner le problème :

  1. prenez un hébergement proposant le PHP [1] sur lequel vous pourrez installer un éditeur comme celui proposé dans Editer plusieurs fichiers de syndication 1/3,
  1. modifiez le script de cet éditeur pour lui demander en plus de l’édition locale des fichiers de transférer ceux-ci sur votre site principal.

 Le FTP en PHP

Le transfert de fichiers sur un serveur se fait par FTP [2]. PHP sait faire du FTP, voici une des solutions pour lui demander [3] :

// Transfert par FTP
echo '<br /><b>Transfert par FTP :</b><br />';

// Mise en place d'une connexion basique
$ftp_server = "mon_serveur";
$conn_id = ftp_connect($ftp_server);

// Identification avec un nom d'utilisateur et un mot de passe
$ftp_user_name = "login";
$ftp_user_pass = "password";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) {
      echo '<p class="red">La connexion FTP a échoué !</p>';
      echo '<p class="red">Tentative de connexion au serveur $ftp_server pour l\'utilisateur '.$ftp_user_name.'</p>';
      exit;
  } else {
      echo '<p class="red">Connexion au serveur '.$ftp_server.", pour l'utilisateur $ftp_user_name</p>";
  }

// Chargement d'un fichier
$destination_file = "/www/atom03.xml";
$source_file = 'atom03.xml';
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
$upload2 = ftp_put($conn_id, "/www/atom1.xml", "atom1.xml", FTP_BINARY);
$upload3 = ftp_put($conn_id, "/www/rss1.xml", "rss1.xml", FTP_BINARY);
$upload4 = ftp_put($conn_id, "/www/rss2.xml", "rss2.xml", FTP_BINARY);
$upload5 = ftp_put($conn_id, "/www/backend.xml", "backend.xml", FTP_BINARY);

// Vérification du statut du chargement pour le premier fichier
if (!$upload) {
      echo '<p class="red">Le chargement FTP a échoué !</p>';
  } else {
      echo '<p class="red">Transfert des fichiers vers '.$ftp_server.'</p>';
  }

// Fermeture du flux FTP
ftp_close($conn_id);

Cet exemple est donné pour une utilisation avec l’éditeur décrit dans Editer plusieurs fichiers de syndication 3/3. Il faut ajouter ce code dans le fichier maker.php dans la partie du script qui traite de l’édition des fichiers, c’est-à-dore à l’intérieur de l’accolade qui commence à if(isset($_POST["ecrire"])) { (ligne 60), après l’écriture locale des fichiers et avant la fermeture de l’accolade. Donc à la ligne 253 vous ajoutez une ligne et vous copier ce code avant l’accolade (qui indique les fin des actions correspondant à l’édition des fichiers.

 Quelques explications sur ce script

Tout d’abord on met en place la connexion avec le serveur distant et on s’identifie, c’est ce que font $conn_id et $login_result ; bien sûr il faut remplacer mon_serveur login et password par les valeurs valeurs correspondantes (nom du serveur FTP, identifiant du site et mot de passe) que vous a communiqué votre hébergeur.

En cas d’échec, le script affiche un message d’erreur La connexion FTP a échoué ! et s’arrête. Sinon, le script continue et transfère les fichiers sur le serveur, c’est $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); qui lui indique ce qu’il faut faire, $source_file étant le fichier à copier (il vient d’être réalisé par l’éditeur [4]), $destination_file étant le nom du fichier transféré et le lieu où il doit être enregistré (le plus souvent pour le placer à la racine du site public il faut faire /www/nom_du_fichier parfois ce n’est pas www mais htdocs qu’il faut faire).

Dans l’exemple ci-dessus ce sont 5 fichiers qui sont transférés : atom03.xml (format Atom 0.3), atom1.xml (format Atom 1.0), rss1.xml (format RSS 1.0), rss2.xml (format RSS 2.0) et backend.xml (format RSS 0.91). Il ne vous reste qu’à adapter en fonction du nombre de fichiers que vous voulez transférer et de leurs noms.

Le script se termine évidemment par la fermeture de la liaison FTP au serveur.

Pour vous simplifier le travail, l’archive Editeur_4.zip : reprend l’éditeur présenté dans Editer plusieurs fichiers de syndication 3/3, seul le fichier maker.php a été modifié comme indiqué dans cet article, les lignes de codes destinées à produire les fichiers .htm et Javascript ont été neutralisées.

 


 

 

[1] De nombreuses solutions sont possibles, en commençant par hébergement gratuit...

[2] Pour plus d’explications, voir Le protocole FTP.

[3] Ce script est inspiré de la page Fonctions FTP. Attention, certains hébergeurs limitent les fonctions PHP utilisables, ce script ne fonctionne pas par exemple chez Free.fr.

[4] On va le chercher dans le dossier où est installé l’éditeur et non pas à la racine du site local, ce qui permet d’utiliser un autre exemplaire de l’éditeur pour le site local.




Bookmark and Share

Imprimer Imprimer cet article


Réactions à l'article :