Forcer téléchargement FTP à partir d'un site hébergé sur Free

Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005 - 8 nov. 2005 à 12:34
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 9 nov. 2005 à 15:21
Bonjour!

Voilà je m'explique, j'héberge mon site chez Free et j'ai un deuxième hébergement sur un autre serveur ou je stocke mes fichiers (serveur limité à 100Go de bande passante en direct download mais illimité via téléchargement FTP).
Lorsque j'emploi la méthode readfile() à partir du serveur Free par exemple: readfile("ftp://...."), et bien ça ne passe pas car Free bloque à mon avis ce qui est "ftp", y aurait-il donc un moyen de contourner ceci?

Merci pour vos réponses.

20 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
8 nov. 2005 à 12:46
Salut,



A mon avis, ce n'est pas free qui bloque mais ton serveur distant qui interdit l'ouverture/lecture des fichiers pour les utilisateurs anonymes.



En plus readfile ne me semble pas la bonne méthode pour ce que tu veux fair. MAIS QU'EST CE QUE TU VEUX FAIRE ? (Je suppose proposer le téléchargement de tes fichiers).



La "bonne" méthode, selon moi, serait de faire une redirection vers ton
fichier. (ou inclure un lien vers ce fichier, y as-tu pensé? [ftp;//.../fichier.xyz teléchargez moi])



Comment faire ? Grâce aux entète HTTP...

Je te renvoi vers cette petite page bien sympathique.





Bonne lecture,
0
Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
8 nov. 2005 à 12:48
Non...justement, je cherche à éviter ceci. Je tiens à ce que mes liens soient masqués, c'est pour ça que j'ai besoin de passer par un script php...

Merci.
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
8 nov. 2005 à 13:14
Tu veux (?)



1. l'utilisateur demande le télchargement

2. le fichier à télécharger est copié sur ton site (readfile, c'est ça)

3. A partir de cette position, il est envoyé à l'utilisateur



Sinon, tu peux jouer avec une socket, mais dans tous les cas, faire
transiter le fichier par ton hébergeur free est une perte de temps
monstrueuse (ainsi qu'un beau gaspillage de bande passante)



Pourquoi ne veut tu pas proposer le téléchargement directement depuis ton autre site (Machine perso ?) ?
0
Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
8 nov. 2005 à 13:25
Je récapiture:

-L'utilisateur demande le téléchargement du fichier exemple en cliquant sur un lien menant au fichier "download.php" (fichier "download.php" sur le serveur free bien entendu)


-Le fichier demandé (qui se trouve dans le code du fichier "download.php") est stocké sur un autre serveur qui est limité à 100Go en direct download mais illimité en download FTP (j'espère que c'est assez clair...c'est pour le manque de bande passante via direct download que je veux utiliser la méthode FTP)

-Tout cela afin d'éviter les vols de liens (je vais ajouter un code afin que le fichier ne soit lancé uniquement qu'à partir de mon site).

Voilà!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 nov. 2005 à 13:27
Salut,



les fonctions FTP ne sont pas activées chez free ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
psychosic Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 11 novembre 2005
8 nov. 2005 à 13:35
Essaye de mettre ton fichier PHP qui lis les données sur le serveur de
stockage. Ensuite dans ce fichiers, il faut que tu simule un post avec
des champs hidden; avec javascript tu post ton formulaire sur une page
sur ton serveur normale qui va lire le contenu du fichier qui est
stocker dans ta variable post tu mets les entêtes qui vont bien et le
tour est joué.



C'est pour éviter de mettre ton FTP en mode anonyme. Comme ca le php qui ouvre les fichiers sont sur le serveur.



Autre solution mais plus complexe:



Si tu n'as pas la liste de tes fichiers à télécharger:

Tu liste le répertoire en PHP en filtrant les fichiers dont l'extension commence par php, html enfin tous ca normale.

Aprés tu peux proposer une liste de lien de fichiers grace a ce que tu recupère du précédant listage.

Pour le téléchargement: le fichier de téléchargement, cette fois ci tu
le laisse sur ton serveur normale. Tu utilise les methodes et propriété
qui vont bien en PHP pour te loguer en FTP (user mot de passe), la tu
ouvre le fichier du lien tu mets les entêtes qui vont bien, tu fais
echo taVaribleQuiContientLeContenuDuFichier et la c'est bon.



A toi de voir la méthode bidouille ou propre.

Je te conseil bien evidemment la methode propre.



@+
0
Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
8 nov. 2005 à 13:45
Merci Anthomicro mais je le savais déjà ^^.

Assez complexe ta méthode psychosic...j'ai réussi à faire ce que je voulais sans utiliser de "readfile()" mais un petit bug par contre sous Firefox lorsqu'on fait un clic droit -> "enregistrer la cible du lien sous..." il me met "download.php" au lieu de me proposer le nom du vrai fichier (par contre il me télécharge bien le bon fichier) mais impossible d'afficher le vrai nom du fichier dans la boite de dialogue "Enregistrer sous..." par contre sous IE ça fonctionne...Z'avez pas une soluce?

Merci tout le monde!

Voici mon code

$filename="nomdufichier";
$url="ftp://nom:motdepasse@serveur/$filename";
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header("Location: $url");
0
massacr Messages postés 233 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 4 janvier 2007
8 nov. 2005 à 16:06
Euh avec cette methode, le client voit l'adresse du fichier, donc un autre site peut demander directement le fichier.
0
Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
8 nov. 2005 à 18:43
Non en fait je vais ajouter un code pour que le téléchargement ne se fasse uniquement qu'à partir de mon site mais la question n'est pas là ....
0
psychosic Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 11 novembre 2005
9 nov. 2005 à 00:23
tout est dans ton header, le force-download ne va pas bien mets
octet/stream ou si ca ne marche pas ya des codes trés complet sur
GOOGLE tu recherche "force download firefox"

@+
0
Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
9 nov. 2005 à 12:25
Salut,


En fait je travail sur un fichier avi, donc j'ai remplacer par:
header("Content-Type: video/msvideo");

Mais rien n'a changé en fait, impossible de changer le nom du fichier que ce soit sur Internet Explorer ou Firefox...apparemment la ligne header("Content-Disposition: attachment; filename=$filename") ne passe pas...concernant google je cherche toujours dessus mais je n'y trouve toujours pas mon bonheur...
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
9 nov. 2005 à 12:25
$filename= "nomdufichier";

$url="ftp://nom:motdepasse@serveur/$filename";

header("Content-Disposition: attachment; filename=$filename");

header("Content-Type: application/force-download");

header("Content-Transfer-Encoding: binary");

header("Location: $url");



C'est rigolo comme méthode, parce que moi, j'ai une super extension sur mon petit renard de feu ( =firefox) qui lit les entêtes. Tu imagines donc le sourire que j'ai aux lèvres (:]) quand je vois que grâce à ton script je pourrais récupérer tes login et mot de passe.



Maintenant, à toi de deviner si je suis bienveillant ou non >:p
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 nov. 2005 à 12:52
de toute façon il ne faut jamais passer par une méthode pareille pour envoyer un fichier ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
9 nov. 2005 à 12:57
lol monoceros01, de toute façon en ce moment j'utilise une simple lien ftp vers le fichier concerné qui contient donc le nom d'utilisateur et le mot de passe mais impossible a changé de toute manière il n'y a que moi qui peut car je suis le propriétaire.
La méthode readfile() vers un ftp n'a pas l'air de fonctionner chez free...sinon je serai passer par là...
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
9 nov. 2005 à 13:14
Euh certe Strider, mais si tu fournis ce lien à tes visiteurs, il
verront forcément ton login et ton mot de passe, donc ils pourront
ramener leur fraise sur ton ftp (avec filezilla par exemple) et
s'amuser (oui oui c'est très drôle) à ajouter des fichiers (bon ça
c'est pas trop grave), à en modifier (ça c'est plus chiant) et à en
supprimer (et oui, c'est con!).

A moins, que tu aies la possibilité de configurer un autre utilisateur
(login et mot de passe) avec juste les droits en lecture...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 nov. 2005 à 13:16
dans ce cas autant donner le lien du ftp...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Strider75 Messages postés 8 Date d'inscription vendredi 4 novembre 2005 Statut Membre Dernière intervention 9 novembre 2005
9 nov. 2005 à 13:25
Pour te répondre cher monoceros01 tout ça c'est déjà fait...impossible d'ajouter de fichier et de les modifier car en lecture seul...


Anthomicro, j'essaye de limiter les vols de lien en passant par le php voilà tout...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 nov. 2005 à 13:33
bah pour ça faut passer par une solution invisible à l'internaute. De
toute façon les fonctions FTP étant désactivées chez free tu perds ton
temps ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
massacr Messages postés 233 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 4 janvier 2007
9 nov. 2005 à 15:15
De toute facons, si l'internaute dowload un fichier, c'est que
l'adresse est forcément passée au client (à moins de les transférer sur
le serveur du site, et de les renvoyer à l'internaute, mais c'est
lourd).
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 nov. 2005 à 15:21
bah ouais mais c'est la seule solution invisible.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous