Page 1 sur 1

upload chez free

Posté : 26 nov. 2006, 12:34
par pfrib
bonjour

j'ai un compte chez free, et c'est la première fois que j'essaye l'upload...
j'ai trouvé un scipt :

Code : Tout sélectionner

/*Page 1*/ <form id="form1" name="form1" enctype="multipart/form-data" method="post" action="page2.php"> <label> <input type="file" name="file" /> </label> <p> <label> <input type="submit" name="Submit" value="Envoyer" /> </label> </p> </form>
/*Page 2*/
<?php
$host = "ftpperso.free.fr";
	$repertoire = "/upload/";
	$login = "login";
	$password = "password";
  // connection au serveur
  if (!$ftp = @ftp_connect($host))
  {
     echo "Connection impossible<br>";
    }else{
     echo "Connecté à $host<br>";
    // login
     if(@ftp_login($ftp, $login, $password)){
        echo "Login ok<br>";
       // changement de répertoire
        if(@ftp_chdir($ftp,$repertoire))
        {
           echo "Changement de répertoire effectué<br>";
          // affichage du répertoire
           $rep_courant = @ftp_pwd($ftp);
           echo "Répertoire courant : <b>$rep_courant</b> <br>";
          // Liste des fichiers
           if ($fichiers = @ftp_nlist($ftp,".")) {
              echo "<blockquote><tt>";
              while(list(,$nom) = each($fichiers))
         		{
                 echo "$nom<br>";
             	}
              echo "</tt></blockquote>";
             // le repertoire n'existe pas
             }
			 else {
              echo "Répertoire inexistant !";
           }
         // erreur lors changement repertoire
          }
		  else{
          echo "Une erreur s'est produite lors du changement de répertoire ($repertoire)<br>";
        }
      // erreur lors du login
       }
	   else{
         echo "Une erreur s'est produite lors du login<br>";
     }
    $ftp1=ftp_put($ftp, $_POST['file'] , $_POST['filename'], FTP_BINARY);
    // deconnection
     @ftp_quit($ftp);
?>
Mais j'obtiens un erreur :
Parse error: syntax error, on line 57
la ligne 57 correspond à la dernière ligne du fichier </html>
(j'ai mis toute la partie html après la partie PHP)

Merci

Posté : 26 nov. 2006, 15:08
par Truc
Salut,

Lorsqu'un message d'erreur indique la dernière ligne tu as 9 chances sur 10 qu'il manque une accolade, fait le compte. :wink:

Posté : 26 nov. 2006, 16:42
par Cyrano
Je vais ajouter une ou deux choses :
-1- on utilise pas le "@" : masquer les erreurs de cette manière, c'est un cache-misère. On corrige;
-2- On indente proprement le code de façon à ce qu'il soit lisible humainement et là, tu t'es un peu loupé, voici ce qui aurait dû être fait et tu va voir que de cette manière, l'erreur serait évidente d'un simple coup d'oeil :
<?php
$host       = "ftpperso.free.fr";
$repertoire = "/upload/";
$login      = "login";
$password   = "password";
// connection au serveur
if (!$ftp = ftp_connect($host))
{
    echo "Connection impossible<br>";
}
else
{
    echo "Connecté à ". $host ."<br>";
    // login
    if(ftp_login($ftp, $login, $password))
    {
        echo "Login ok<br>";
        // changement de répertoire
        if(ftp_chdir($ftp,$repertoire))
        {
            echo "Changement de répertoire effectué<br>";
            // affichage du répertoire
            $rep_courant = ftp_pwd($ftp);
            echo "Répertoire courant : <b>". $rep_courant ."</b> <br>";
            // Liste des fichiers
            if ($fichiers = ftp_nlist($ftp,"."))
            {
                echo "<blockquote><tt>";
                while(list(,$nom) = each($fichiers))
                {
                    echo "". $nom ."<br>";
                }
                echo "</tt></blockquote>";
                // le repertoire n'existe pas
            }
            else
            {
                echo "Répertoire inexistant !";
            }
            // erreur lors changement repertoire
        }
        else
        {
            echo "Une erreur s'est produite lors du changement de répertoire (". $repertoire .")<br>";
        }
        // erreur lors du login
    }
    else
    {
        echo "Une erreur s'est produite lors du login<br>";
    }
    $ftp1 = ftp_put($ftp, $_POST['file'] , $_POST['filename'], FTP_BINARY);
    // deconnection
    ftp_quit($ftp);
 // <<=== accolade fermante du else manquante !
?>
-3- il me semble que de toutes façons ça ne peut pas fonctionner : les fonction FTP sont désactivées chez free (à vérifier, ça a peut-être changé, je n'ai pas remarqué dernièrement.

Posté : 26 nov. 2006, 17:41
par pfrib
ah ! je ne savais pas que free n'acceptait pas les fonctions ftp (j'ai eu mon compte il n'y a pas longtemps)
existe il une autre methode pour l'upload ?

Posté : 26 nov. 2006, 17:44
par Cyrano
si tes fichiers n'excèdent pas 2Mo, tu peux utiliser l'upload HTTP. Il y a un tuto sur le site de PHPFrance sur le sujet.

Posté : 26 nov. 2006, 18:02
par pfrib
Merci Cyrano, :D
J'ai essyé avec la methode HTTP, j'ai presque pas modifié la source de phpfrance :
if(isset($_FILES['fichier']))
{
$dest_dossier = '/upload/';
$dest_fichier = basename($_FILES['fichier']['name']);
move_uploaded_file($_FILES['fichier']['tmp_name'], $dest_dossier . $dest_fichier);
}
mais j'ai une erreur :
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access /upload/fichier.jpg in /mnt/139/sdb/0/3/serveur/upload.php on line 13

Posté : 26 nov. 2006, 20:50
par Spols
as tu deja créer le dossier??