Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1601 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Transfert de fichier qui bloque

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transfert de fichier qui bloque

n°1460464
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 19-10-2006 à 13:38:32  profilanswer
 

Bonjour a tous,
 
Je suis en train de créer un script antileech. Bien que tout marche, j'ai de gros problemes en tout ce qui concerne le transfert du fichier requis par l'utilisateur ;
 
1) Le transfert se bloque a +- 18-19Mo
2) Dans le fichier (corrompu a cause de 1), je peux lire des en tetes suivants :
 
HTTP/1.1 200 OK
Date: Sun, 15 Oct 2006 16:02:47 GMT
Server: Apache/ProXad [Jul 17 2006 17:19:17]
Last-Modified: Sun, 15 Oct 2006 15:31:57 GMT
ETag: "43dddb-2faf080-4532546d"
Connection: close
Accept-Ranges: bytes
Content-Length: 50000000
Content-Type: text/plain
 
Déja, étant donné que le fichier est un RAR, je suppose que ces entetes HTTP n'ont rien a foutre dans mon fichier. Comment faire pour que cela n'arrive pas
 
Merci d'avance ;)
 
WiiDS
 
Le code :
 

Code :
  1. $fichierRequis = 'photos.rar';
  2. $informationsFichier = array('taille' => '50000000');
  3. @ini_set('zlib.output_compression', 'Off');
  4. @header('Pragma: public');
  5. @header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  6. @header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
  7. @header('Content-Transfer-Encoding: none');
  8. @header('Content-Type: application/octetstream; charset=iso-8859-1; name="'.$fichierRequis.'"');
  9. @header('Content-Disposition: attachement; filename="'.$fichierRequis.'"');
  10. @header('Content-Length: '.$informationsFichier['taille']);
  11. $pathCompletFichierRequis = 'fichiers/'.$fichierRequis;
  12. readfile($pathCompletFichierRequis);


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
mood
Publicité
Posté le 19-10-2006 à 13:38:32  profilanswer
 

n°1460486
flo850
moi je
Posté le 19-10-2006 à 13:54:21  profilanswer
 

peut etre que le telechargement est trop long par rapport au temps d'execution maxi de ton script ( set_time_limit en debut de script pour modifier ca )

n°1460903
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 19-10-2006 à 19:24:39  profilanswer
 

Ok vais voir merci ;)
 
EDIT : Ca ne marche pas toujours cause : Safe mode
 
Il me faudrait donc une solution plus universelle ;)


Message édité par WiiDS le 19-10-2006 à 19:42:43
n°1462195
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 21-10-2006 à 21:52:59  profilanswer
 

UP :'(

n°1466146
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 27-10-2006 à 14:52:53  profilanswer
 

Bon je résume :
 
- Probleme de lecture du fichier qui stoppe le téléchargement au bout d'un certain temps. Ne veut pas utiliser ini_set() car impossible a cause de Safe mode et mon script doit être le plus universel possible
 
- Probleme d'headers HTTP qui s'inscrivent dans le fichier et qui le corrompt.
 
Mon but : Protéger les fichiers contre le leech.
 
C'est le seul moyen que j'avais trouvé mais a cause de ca je suis bloqué ...
 
Le dossier contenant les fichiers a un .htaccess n'autorisant que 127.0.0.1 a lire / écrire les fichiers


Message édité par WiiDS le 27-10-2006 à 14:55:04
n°1466163
Sh@rdar
Ex-PhPéteur
Posté le 27-10-2006 à 15:16:09  profilanswer
 

ton fichier fait pile poil 50000000 octets, pas un de plus/moins ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1466177
supermofo
Hello World !
Posté le 27-10-2006 à 15:23:10  profilanswer
 

Salut il s'agit d'un formulaire d'upload ?
 
Si non, je pige pas pourquoi les headers serait changés .

n°1466178
Sh@rdar
Ex-PhPéteur
Posté le 27-10-2006 à 15:23:54  profilanswer
 

c'est un script d'antileech...


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1466230
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 27-10-2006 à 15:48:25  profilanswer
 

Sh@rdar a écrit :

ton fichier fait pile poil 50000000 octets, pas un de plus/moins ?


C'était un exemple ;) Ca varie, ca peut très bien être 1 octet comme 10 000 000 000 octets :p

n°1466238
Sh@rdar
Ex-PhPéteur
Posté le 27-10-2006 à 15:55:22  profilanswer
 

mais l'entête envoyé est bon niveau taille ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
mood
Publicité
Posté le 27-10-2006 à 15:55:22  profilanswer
 

n°1466277
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 27-10-2006 à 16:13:21  profilanswer
 

Je récupère la taille par un filesize() donc je dirais que c'est bon de plus la taille varie [:spamafote]

n°1466302
Sh@rdar
Ex-PhPéteur
Posté le 27-10-2006 à 16:25:30  profilanswer
 

tu peux filer le vrai code et complet stp ?


Message édité par Sh@rdar le 27-10-2006 à 16:25:41

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1466312
Sh@rdar
Ex-PhPéteur
Posté le 27-10-2006 à 16:31:25  profilanswer
 

à priori avec des gros fichiers ça déconne :/  
 
tu devrais passer via un fopen et une boucle pour le lire


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1466326
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 27-10-2006 à 16:43:53  profilanswer
 

--- censuré ---


Message édité par WiiDS le 24-01-2007 à 17:47:57
n°1466358
Sh@rdar
Ex-PhPéteur
Posté le 27-10-2006 à 17:36:31  profilanswer
 

la vache :eek:
 
et t'es sur que l'entête de taille est bon ? pourquoi tu fais pas un filesize() directement sur le fichier pour l'avoir ?
 
et pourquoi un ob_end_clean ? tu utilise pas bufffer à priori..


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1466366
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 27-10-2006 à 17:49:34  profilanswer
 

Sh@rdar a écrit :

la vache :eek:
 
et t'es sur que l'entête de taille est bon ? pourquoi tu fais pas un filesize() directement sur le fichier pour l'avoir ?
et pourquoi un ob_end_clean ? tu utilise pas bufffer à priori..


J'en fais un indirectement car le script permet d'ajouter / supprimer les fichiers du dossier /fichiers/ qui pourront être téléchargés et lors de cet ajout un filesize est effectué. J'ai choisi de faire ainsi car ca économise un peu les ressources du serveur (si 100 personnes téléchargent un fichier ca fera 100 filesize ...)
 
j'ai lu qu'il fallait faire un ob_end_clean alors j'en fais un :D Mais je peux l'enlever si c'est inutile ;)
 
C'est si mauvais que ca le script ? :sweat:

n°1466370
Sh@rdar
Ex-PhPéteur
Posté le 27-10-2006 à 17:54:37  profilanswer
 

disons que ça pourrait être largement simplifié, surtout les if () exit à répétition :/ et tu devrais penser à commenter aussi
 
faudrait virer tous les entêtes et ne laisser que la taille et le content-type pour commencer
 
t'aurais pas une url ?


Message édité par Sh@rdar le 27-10-2006 à 17:56:40

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1466378
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 27-10-2006 à 18:09:23  profilanswer
 

Ok merci faudra que j'optimise ;)
 
Je te file une url en pv dans qques minutes ;)
 
Pour les entetes, je remplace donc
 
@header('Pragma: public');
@header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
@header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
@header('Content-Transfer-Encoding: none');
@header('Content-Type: application/octetstream; name="'.$fichierRequis.'"');
@header('Content-Disposition: attachement; filename="'.$fichierRequis.'"');
@header('Content-Length: '.$informationsFichier['taille']);
@header("Accept-Ranges: ".$informationsFichier['taille']);
 
par
 
@header('Content-Type: application/octetstream; name="'.$fichierRequis.'"');
@header('Content-Length: '.$informationsFichier['taille']);
 
?

n°1466413
supermofo
Hello World !
Posté le 27-10-2006 à 18:55:55  profilanswer
 

Salut je connaissais pas le label antileech mais je vais te donner des pistes pour résoudre ton problème:
 
1- forcer l'utilisateur à se connecter  
2 - forcer un télechargement d'un petit fichier 200 ko ( interlude par ex )
3 - déduire la bande passante du client en fonction mis pour passer entre les pages  
4 - utiliser un identifiant basé sur le temps et un seeds + IP
 
J'espere que ca va aider  :jap:

n°1466586
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 28-10-2006 à 13:38:54  profilanswer
 

Re a tous,
 
Toujours dans la mouise avec le problème. Il est maintenant plus que certain que la solution que j'ai choisie ne correspondait pas a mes exigeances vis a vis des hébergeurs gratuits :hello:
 
WiiDS :hello:

n°1471383
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 06-11-2006 à 22:28:09  profilanswer
 

Up \o/

n°1506880
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 24-01-2007 à 17:48:14  profilanswer
 

Up aucas ou :o

n°1506933
leflos5
On est ou on est pas :)
Posté le 24-01-2007 à 20:28:12  profilanswer
 

Ca merde où parce que c'est pas clair :???:

n°1517987
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 21-02-2007 à 21:17:41  profilanswer
 

leflos5 a écrit :

Ca merde où parce que c'est pas clair :???:


 
 
Au niveau du téléchargement, il coupe souvent a quelques secondes du début :??:  
 

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Transfert de fichier qui bloque

 

Sujets relatifs
Copie automatique d'une macro prééxistante à la création d'un fichiercomment effacer dynamiquement une ligne vide sur un fichier ?
[PHP][Mysql] Transfert resultat requetegeneration d'un fichier word
Gestion de fichier xml par phpEcrire Paramètres Application à l'éxécution en fichier conf XML
Creation de fichier binaire->choix du nombre de bits[ XSL ] Peut-on externaliser des variables dans un fichier
fonction unlink bloque l'affichage d'une tablePHP : Fonction mail() bloque ma page
Plus de sujets relatifs à : Transfert de fichier qui bloque


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR