| Page de téléchargement | | De Stéphane Wantiez - Mercredi 11 Septembre 2002 à 17:07
Voici donc un script qui permet au webmaster d'un site d'utiliser la fonction ci-dessus pour télécharger des fichiers sur son serveur, sans devoir passer par son propre PC :
<?
function ftp_copy ( $host, $user, $pass, $path, $name, $url) {
// Fonction trouvée à l'adresse :
// http://www.phpinfo.net/?p=commentaires&rub=astuces&id=129
// Réalisée par Tom, modifiée par Lord W
echo "\n<br>\nLancement de la procédure de transfert..." ;
if ( ( empty ( $user ) ) || ( empty ( $pass ) ) ) die ("\n<br>\nErreur : Pas de log-in ou de mot de passe pour le serveur FTP de réception !\n\n</body>\n\n</html>") ;
$url = eregi_replace ( " " , "%20" , $url ) ;
echo "\n<br>\n Ouverture du fichier à télécharger..." ;
@ $fd = fopen ( $url , "rb" ) ;
if ( $fd ) { echo "\n<br>\n OK : Fichier à télécharger ouvert." ; }
else { die ("\n<br>\n Erreur : Impossible de lire le fichier à télécharger.\n\n</body>\n\n</html>") ; }
echo "\n<br>\n Ouverture du fichier temporaire d'écriture..." ;
@ $tmp = tmpfile () ;
if ( $tmp ) { echo "\n<br>\n OK : Fichier temporaire ouvert." ; }
else { die ("\n<br>\n Erreur : Impossible de créer un fichier temporaire !\n\n</body>\n\n</html>") ; }
echo "\n<br>\n Transfert des données du fichier à télécharger au fichier temporaire..." ;
$size = 0 ;
while ( ! feof ( $fd ) ) {
fwrite ( $tmp , fread ( $fd , 1 ) ) ;
$size++ ;
}
if ($size>1048576) {
$gsize = $size / 1048576 ;
$tsize = number_format ( $gsize , 2 , "," , "." ) ;
$taille = $tsize." [mo]" ;
}
elseif ($size>1024) {
$gsize = $size / 1024 ;
$tsize = number_format ( $gsize , 2 , "," , "." ) ;
$taille = $tsize." [ko]" ;
}
else {
$taille = $size." [octet".( $size>1 ? "s" : "" )."]" ;
}
echo "\n<br>\n OK : Transfert terminé." ;
echo "\n<br>\n Taille du fichier : ".$taille."." ;
fclose ( $fd ) ;
rewind ( $tmp ) ;
echo "\n<br>\n Connexion au serveur FTP de réception..." ;
@ $fp = ftp_connect ( $host ) or die ("\n<br>\n Erreur : Impossible de se connecter au serveur de réception !\n\n</body>\n\n</html>") ;
echo "\n<br>\n OK : Connexion réussie." ;
echo "\n<br>\n Identification au serveur FTP de réception..." ;
@ $log = ftp_login ( $fp , $user , $pass ) or die ("\n<br>\n Erreur : Impossible de s'identifier au serveur de réception !\n\n</body>\n\n</html>") ;
echo "\n<br>\n OK : Identification réussie." ;
if ( ! ( empty ( $path ) ) ) {
echo "\n<br>\n Changement de dossier sur le serveur de réception..." ;
ftp_chdir ( $fp , $path ) or die ("\n<br>\n Erreur : Impossible de changer de dossier sur le serveur de réception !\n\n</body>\n\n</html>") ;
echo "\n<br>\n OK : Changement opéré avec succès." ;
}
echo "\n<br>\n Transfért des données du fichier temporaire au serveur FTP de réception..." ;
@ ftp_fput ( $fp , $name , $tmp , FTP_BINARY ) or die ("\n<br>\n Erreur : Impossible de transférer les données du fichier temporaire au serveur FTP de réception !\n\n</body>\n\n</html>") ;
echo "\n<br>\n OK : Transfert opéré avec succès." ;
ftp_quit ( $fp ) ;
fclose ( $tmp ) ;
echo "\n<br>\nOK : Procédure de transfert terminée avec succès." ;
return true ;
}
?>
<html>
<head>
<title>Script de téléchargement PHP-FTP - Administration - FORTRESS WOLFENSTEIN</title>
</head>
<body>
<? if (empty($submit)) { ?>
<h2><b><u>Script de téléchargement PHP-FTP</u></b></h2>
<p>Veuillez entrer l'URL du fichier à télécharger vers le répertoire
temporaire '/ftp/' :</p>
<form method="POST" action="transfert.php">
<p><input type="text" name="url" size="50"></p>
<p><input type="submit" value="Transférer" name="submit"><input type="reset" value="Rétablir" name="B2"></p>
</form>
<? } else {
if (empty($url)) {
die ("\nErreur : Pas d'URL entrée !\n\n</body>\n\n</html>") ;
}
$adresse = parse_url ($url) ;
$ip = gethostbyname ($adresse["host"]) ;
if ((!(is_array($adresse)))||(!($ip))) {
die ("\nErreur : L'URL entrée n'est pas valide.\n\n</body>\n\n</html>") ;
}
echo "\nOK : URL valide - Détails de cette adresse :<br> <br>" ;
echo "\n<ul>" ;
echo "\n<li><u>URL complète :</u> ".$url."</li>" ;
echo "\n<li><u>Protocole utilisé :</u> ".$adresse["scheme"]."</li>" ;
if ($adresse["user"]) echo "\n<li><u>Log-In d'utilisateur :</u> ".$adresse["user"]."</li>" ;
if ($adresse["pass"]) echo "\n<li><u>Mot de passe d'utilisateur :</u> ".$adresse["pass"]."</li>" ;
echo "\n<li><u>Serveur hôte :</u> ".$adresse["host"]."</li>" ;
echo "\n<li><u>IP du serveur :</u> ".$ip."</li>" ;
if ($adresse["port"]) echo "\n<li><u>Port de connexion :</u> ".$adresse["port"]."</li>" ;
echo "\n<li><u>Référence absolue du fichier sur le serveur :</u> ".$adresse["path"]."</li>" ;
if ($adresse["query"]) echo "\n<li><u>Paramètres de requête :</u> ".$adresse["query"]."</li>" ;
if ($adresse["fragment"]) echo "\n<li><u>Signet :</u> ".$adresse["fragment"]."</li>" ;
echo "\n</ul>" ;
echo "\n<br> \n";
$chem1 = explode ("/",$adresse["path"]) ;
$nbr_chem1 = count ($chem1) ;
$nom_fichier = $chem1[$nbr_chem1-1] ;
$localfile = "- répertoire absolu de la destination du fichier -".$nom_fichier ;
$localfile_rel = "- répertoire relatif de la destination du fichier, par rapport à ce script -".$nom_fichier ;
echo "\n<br>Destination du fichier : ".$localfile." (en mode anonyme)." ;
echo "\n<br>Vérification de la présence du fichier à télécharger dans le répertoire temporaire..." ;
if (file_exists($localfile_rel)) die ("\n<br>Erreur : Le fichier à télécharger se trouve déjà dans le répertoire temporaire !\n<br>Veuillez le traiter avant de procéder au téléchargement.\n\n</body>\n\n</html>") ;
echo "\n<br>OK : Fichier non présent dans le répertoire temporaire." ;
ftp_copy("- serveur FTP de réception -","- log-in pour ce serveur -","- mot de passe pour ce serveur -","- répertoire(s) sur ce serveur -",$nom_fichier,$url) or die ("\n<br>Erreur : Impossible de transférer le fichier !\n\n</body>\n\n</html>") ;
} ?>
</body>
</html>
Cette page affiche tout d'abord un formulaire contenant un champ de texte dans lequel vous introduirez l'adresse du fichier à transférer, et ensuite affiche des messages d'état informant l'utilisateur de l'évolution du transfert.
|
|