upload chez free

Petit nouveau ! | 8 Messages

26 nov. 2006, 12:34

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

26 nov. 2006, 15:08

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

26 nov. 2006, 16:42

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 8 Messages

26 nov. 2006, 17:41

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 ?

Mammouth du PHP | 19672 Messages

26 nov. 2006, 17:44

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 8 Messages

26 nov. 2006, 18:02

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

Mammouth du PHP | 1967 Messages

26 nov. 2006, 20:50

as tu deja créer le dossier??
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube