Aller au contenu
Zebulon
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[résolu] Transfert FTP en PHP


julkien

Messages recommandés

Bonjour tous le monde,

 

Je suis en train de créer un modules pour mon site, qui consiste (pour les mappeurs de TMN / TMU [trackmania]) a pouvoir uploader directement, leur panneau, musique, et panneau animé sur un ftp afin qu'il soit "visible" par tous a travers le jeu.

 

J'ai donc suivit plusieurs "études" a savoir manuelphp, et se jolie script : script qui devrait marcher

 

Et je me suis donc fait se script :

 

<?php

require('modules/accessmod/securite.php');

bloc_head('Les accessoires !');

if (get_grade() >= GRD_VISIT) {

 echo '<center><h1>Modules d\'upload d\'accessoires pour TMUF</h1> (TMU & TMN)</center>';

		$req2 = reqmysql('SELECT * FROM `accessmod` WHERE `id`="1";');
if(mysql_num_rows($req2) > 0)
	$row2 = mysql_fetch_array($req2);

// Adresse FTP du serveur ne commençant pas par ftp://
$ftp_server =($row2['ftp_server']);

// Login
$ftp_user_name =($row2['ftp_username']);

// Mot de passe
$ftp_user_pass =($row2['ftp_userpass']);

// création de la connexion
$conn_id = ftp_connect("$ftp_server");

// authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id,$ftp_user_name,$ftp_user_pass);

// vérification de la connexion
if ((!$conn_id) || (!$login_result))
{ 
echo "<FONT CLASS=\"erreur\">La connexion FTP a échoué!<BR>";
echo "Tentative de connexion à ",$ftp_server," avec",$ftp_user_name,"</FONT>";
die;
}
else
{
echo "Connecté à <B>",$ftp_server,"</B>, avec <B>",$ftp_user_name,"</B><P>";
}

// Activation du mode passif
ftp_pasv($conn_id, true);

$source_file = "diag.JPG";

$destination_file = rand()."$pseudo.$source_file";
// Chargement d'un fichier
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);


// Vérification du status du chargement
if (!$upload) {
	echo "Le chargement FTP a échoué!";
} else {
	echo "Chargement de $source_file vers $ftp_server en tant que $destination_file réussi";
}

// fermeture de la connexion FTP.
ftp_quit($conn_id);

}
close_table();

?>

 

certaine fonction ne vous parle peut être pas car elle sont propre a mon CMS (kwsphp).

 

Le problème se situe, au niveau du fichier, car la connexion se fait bien, et si je laisse tel qu'elle le fichier est bien transféré ($source_file = "diag.JPG":P

 

Mais si je veut le faire rentré dans une variable (comme le lien cité plus haut) sa fonctionne pas avec un jolie message d'erreur :

 

Ftp_put() expects parameter 3 to be string, array given in (ligne concerné)

 

voir :

 

Ftp_put() expects parameter 2 to be string, array given in (ligne concerné)

 

Bref je pige pas pourquoi mettre dans un formulaire, ca ne marche pas, j'ai quand même essayer le script cité plus haut dans le lien, sans le modifier (sauf bien sûr les infos de connections) et j'ai le même soucie...

 

Merci a ceux qui sauront m'aider a résoudre se problème.

 

Ha j'oubliait, j'utilise un FTP distant de mon site, car OVH coute déjà un certain prix pour 600 mo, tandis que free, lui pour 10 giga n'en demande heuuu rien :P

 

Kewlcat, comme c'est ton annif aujourdhui, et que je sais que ce forum là tu y passe beaucoup de temps, je te souhaite donc un joyeux anniversaire :P

Modifié par julkien
Lien vers le commentaire
Partager sur d’autres sites

Tu remplaces "diag.JPG" par quoi, quand tu récupères le nom du fichier de.. de où, d'ailleurs ? Et est-ce que ce fichier est bien dans le répertoire concerné (celui où il y a diag.JPG) ?

 

Merci pour la gentille attention :P

 

Je passe donc par un formulaire :

 

Soit comme ceci (sur la même page):

 

<FORM METHOD="post" ACTION="<? echo $PHP_SELF; ?>" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="source_file" SIZE="50">
<INPUT TYPE="submit" VALUE="Go !">
<INPUT TYPE="hidden" NAME="sent" VALUE="1">
</FORM>

 

avec une légère modifs du code (façon lien cité dans le topic)

 

soit comme ceci (depuis une autre page):

 

<FORM METHOD="post" ACTION="index.php?mod=accessmod&ac=upupup" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="source_file" SIZE="50">
<INPUT TYPE="submit" VALUE="Go !">
<INPUT TYPE="hidden" NAME="sent" VALUE="1">
</FORM>

 

upupup étant dans se cas la page de traitement du ftp (ouverture / envoie / fermeture) (dans un chemin relatif du CMS)

 

Et aucun des deux fonctionne, je me retrouve toujours avec la même erreur, le fichier est donc sur mon dd chez moi, et je le mets grâce au formulaire en "cache du post"

 

Je précise que je suis en local pour l'instant, je n'est pas tenter directement de chez OVH, mais si sa ne fonctionne pas chez moi, ca ne peut pas fonctionner la bas :P

Lien vers le commentaire
Partager sur d’autres sites

Vu le message d'erreur ça ressemble à un problème de tableau...

 

A quoi ressemble ton "formulaire" ? A un truc du genre ? :

 

<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>?variable=valeur">
<input type="file" name="fichier">
<input type="submit" value="Go">
</form>

 

PS : idem, bon anniversaire Kewlcat...en espérant que tu ne connaisses pas la même fin que Jesus :P

 

EDIT : arff, à 6 minutes prés je devançai ta précision :P

Modifié par Grenouille
Lien vers le commentaire
Partager sur d’autres sites

Tiens, tu adapteras :

 

<html>
<body>
<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>?variable=valeur">
<input type="file" name="fichier">
<input type="submit" value="Go">
</form>
<?php
if((isset($_GET['variable'])) && $_GET['variable']=='valeur') {
$serverftp = "ftp.domaine.com"; 
$username = "login"; 
$pass = "pass";
$fichier = $_FILES['fichier']; 
$destination = "/chemin/vers/dossier/";
$conn_id = ftp_connect($serverftp);
$login_result = ftp_login($conn_id, $username, $pass); 
if ((!$conn_id) || (!$login_result)) 
{
echo "<FONT CLASS=\"erreur\">La connexion FTP a échoué!<BR>";
echo "Tentative de connexion à ".$serverftp." avec".$username."</FONT>";
die;
}
elseif (ftp_put($conn_id, $destination . $fichier['name'], $fichier['tmp_name'], FTP_BINARY)){
echo "Connecté à <B>",$serverftp,"</B>, avec <B>",$username,"</B><P>";
}
else
{
echo '<br>'.$fichier['name'].' transféré';
}
ftp_quit($conn_id);
} 
?>
</body></html>

Lien vers le commentaire
Partager sur d’autres sites

julkien, ton script PHP s'attend à trouver un chemin (relatif ou absolu) + un nom de fichier et ton formulaire lui envoie le contenu ainsi que le nom (juste le nom, pas le chemin) du fichier.

C'est à ce niveau-là que ça ne passe pas.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...