Hello !
J'ai le code suivant qui devrait m'être utile pour "simuler" un ftp interne à un site. Dans les grandes lignes, il est sensé :
- permettre la sélection d'un fichier cible
- uploader le fichier sur le serveur
- faire une insertion dans une base de données (relative à l'upload)
- afficher la liste des fichier uploadés (et permettre de les supprimer)
Ce code semble tourner sur une autre machine, par contre avec Easy Php 1.8 et sur le serveur qui doit l'héberger, ça ne fonctionne pas ... là vraiment je sèche totalement, j'ai passé je ne sais pas combien d'heures à trouver le bug, mais sans succès ... est-ce que qqun pourrait m'aider ?
<?
include("head.html");
include "connection.php";
// Avec le paramètre UPGRADE=1 dans l'url,
// cela permet de générer tous les identifiants (ID_Upload) pour les fichiers qui existaient déjà
// cela supprime aussi tous les enregistrements pour lesquels le fichier n'existe pas
$trans = '';
if(isset($_GET['upgrade']))
{
$sql = "SELECT * FROM tbl_upload;";
$res = mysql_query($sql);
$i=0;
while($row = mysql_fetch_Array($res))
{
if($row['ID_Upload'] == '')
{
// L'identifiant est basé sur la date et l'heure avec un incrément puis crypté en md5
$id_upload = substr(md5(date(Y-m-d-H-i-s).$i),0,255);
$sql2 = 'UPDATE tbl_upload SET ID_Upload = \''.$id_upload.'\' WHERE nom_fichier = \''.$row['nom_fichier'].'\';';
mysql_query($sql2);
$i++;
}
// Test si le fichier existe, si non, supprime l'enregistrement
if(!file_exists('../fichiers/'.$row['nom_fichier']))
{
$sql3 = 'DELETE FROM tbl_upload WHERE nom_fichier = \''.$row['nom_fichier'].'\'';
mysql_query($sql3);
}
}
}
?>
<table width="500" border="0" cellspacing="1" cellpadding="1">
<tr>
<td width="50"></td>
<td colspan="2"><p><strong><FONT face=Verdana color="#0000FF" size=4>Transfert
de fichier<br>
<br>
</font></strong> </td>
</tr>
<tr>
<td></td>
<td>
<?
if($trans!="ok")
{
?>
<FORM ENCTYPE="multipart/form-data" ACTION="ftp.php?trans=ok" METHOD=POST>
<table>
<tr>
<td>Veuillez sélectionner le fichier à transférer sur
le serveur :<br>
</td>
</tr>
<tr>
<td><input type="File" name="userfile" size="30" maxlength="255">
</td>
</tr>
<tr>
<td><input name="newname" type="hidden" value="../fichiers/" size="30" maxlength="255">
</td>
</tr>
<tr>
<td><BR><input type="submit" value="Transférer ce fichier" name="Upload">
</td>
</tr>
</table>
</form>
<?
}
?>
<?php
if($trans=="ok")
{
$name= $newname."".$userfile_name;
if ($newname=='') { $newname=$userfile_name; }
copy($userfile, $name) ;
// Ajout de l'identifiant pour chaque fichier
// L'ID est la date et l'heure courante crypté en MD5 puis coupé à 255 caractères maximum
// Aucune chance de tomber 2 fois sur le même résultat
$ID_Upload = substr(md5(date(y-m-d-H-i-s)),0,255);
// Insertion du fichier dans la base de données
$chemin = "http://localhost/sitetest/upload/".$userfile_name;
$marequete="INSERT INTO tbl_upload (ID_Upload, nom_fichier, type_fichier, chemin_fichier, idsite) VALUES (\"$ID_Upload\",\"$userfile_name\",\"$userfile_type\",\"$chemin\", \"$idsite\")";
// Execution de la requête
$monresultat=mysql_query($marequete);
?>
<TABLE>
<TR>
<TD><b>Rapport de transfert</b></TD><TD></TD>
</TR>
<TR>
<TD>Localisation temporaire </TD>
<TD>: <?php echo $userfile; ?></TD>
</TR>
<TR>
<TD>Nom du fichier </TD>
<TD>: <?php echo $userfile_name; ?></TD>
</TR>
<TR>
<TD>Emplacement cible </TD>
<TD>: <?php echo $newname; ?></TD>
</TR>
<TR>
<TD>Taille </TD>
<TD>: <?php echo $userfile_size; ?></TD>
</TR>
<TR>
<TD>Type de fichier </TD>
<TD>: <?php echo $userfile_type; ?></TD>
</TR>
</TABLE>
<br>
<input name="modifier2" type="button" id="modifier23" value="Fermer" onClick="window.location.replace('ftp.php')">
<?
$trans="";
}
?>
</td>
</tr>
</table>
<p>
<form name="formtext" method="post" action="<? echo "ftp.php?param=".$param."&action=executer" ?>">
<table border="0" cellpadding="1" cellspacing="1">
<tr>
<td width="50"></td>
<td colspan="2"><p><strong><FONT face=Verdana color="#0000FF" size=4>Explorateur</font><FONT face=Verdana color="#0000FF" size=4>
FTP <br>
<br>
</font></strong> </td>
</tr>
<?
// Ajout de la suppression de fichier
if(isset($_GET['FileID']) && $_GET['action'] == 1)
{
if(strlen($_GET['FileID']) > 0)
{
// Récupère le nom du fichier selon l'ID passé en paramètre
$sql = 'SELECT nom_fichier FROM tbl_upload WHERE ID_Upload = \''.$_GET['FileID'].'\';';
$resFile = mysql_query($sql);
// Supprime le fichier physiquement
if(mysql_num_rows($resFile) == 1)
{
@unlink('../fichiers/'.mysql_result($resFile,0,'nom_fichier'));
// Supprime l'enregistrement dans la base de données
$sql = 'DELETE FROM tbl_upload WHERE ID_Upload = \''.$_GET['FileID'].'\';';
mysql_query($sql);
echo '<tr><td width="50"></td><td colspan="2"><font color="red">Votre fichier a été supprimé du serveur et de la base de données !</font></td></tr><tr><td> </td></tr>';
}
}
}
?>
<tr>
<td></td>
<td>Voici la liste des fichiers transférés et disponibles
sur le serveur :<br>
</td>
<td> </td>
</tr>
<tr>
<td></td>
<td>
</td>
<td> </td>
</tr>
<tr>
<td width="50"></td>
<td colspan="2">
<?
// Création de la requête de lecture
$marequete="SELECT * FROM tbl_upload where idsite=\"$idsite\" ORDER BY nom_fichier, type_fichier";
// Execution de la requête
$monresultat=mysql_query($marequete);
echo '<TABLE>';
while($row = mysql_fetch_array($monresultat))
{
if(file_exists('../fichiers/'.$row['nom_fichier'])) echo "<TR><TD><img src=\"picture/fichier.jpg\"></TD><TD><A HREF=\"../fichiers/".$row['nom_fichier']."\" TARGET=\"_blank\">".$row['nom_fichier']."</A></TD><TD>".$row['type_fichier']."</TD><TD>".substr($row['chemin_fichier'],0,30)."...</TD><td><a href=\"ftp.php?FileID=".$row['ID_Upload']."&action=1\" alt=\"Supprimer le fichier\"><img alt=\"Supprimer le fichier\" border=0 src=\"images/ed_delete.gif\"></a></td></TR>";
}
echo "</TABLE>" ;
?>
</td></tr>
<tr>
<td></td>
<td colspan="2"><br>
<input name="modifier2" type="button" id="modifier22" value="Fermer" onClick="window.location.replace('index.php')">
</td>
</tr>
</table>
</form>
<?php include("foot.html"); ?>