Il peut être utile de manipuler des fichiers à distance, c'est-à-dire par le biais des protocoles de transferts HTTP ou FTP.
Le langage PHP autorise l'ouverture d'un fichier par l'intermédiaire d'une ardresse URL dans la fonction fopen et depuis la version 4.3.0 avec également les fonctions d'inclusions include(), include_once(), require() et require_once().
$id_fichier = fopen("http://www.site.com/index.html", "r");
include 'http://www.site.com/fichier.php?var=val';
A partir de ce moment, toutes les informations contenues dans le fichier sont accessibles en lecture seule dans une application PHP.
$taille = filesize("fichier.html");
echo str_replace("<", "<", fread($id_fichier, $taille));
L'écriture sur un fichier distant est également possible, à condition de passer en argument une adresse FTP à la fonction fopen et que ce fichier soit nouveau.
$id_fichier = fopen("ftp://site.ftp.com/nouvelle_page.html", "w");
Evidemment, l'accès en écriture directement sur un site, nécessite souvent, la saisie d'un nom d'utilisateur et d'un mot de passe dans l'adresse afin d'éviter toutes intrusions inopportunes.
ftp://nom_utilisateur:mot_passe@ftp.site.com/nouvelle_page.html
La modification d'un fichier distant n'est pas réalisable par ce moyen.
Sous un environnement Windows, il est impossible d'utiliser les fichiers distants dans les expressions include et require.
Exemple [voir]<?php
function recherche_contenu($adresse)
{
$id_fichier = fopen($adresse, "r");
if ($id_fichier)
{
$regexp = "<!-- Début contenu -->.*<!-- Fin contenu -->";
$contenu = fread($id_fichier, filesize($adresse));
if (eregi($regexp, $contenu, $donnee))
{
echo "<h3><u>Données contenu :</u></h3> "
. str_replace("<", "<", $donnee[0]);
}
else echo "<p>Impossible de trouver la chaîne.\n";
}
else echo "<p>Impossible d'ouvrir le fichier distant.\n";
fclose($id_fichier);
}
recherche_contenu("http://www.site.com/page.html");
?> |