IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Forcer un téléchargement, ok, mais ensuite, ca bloque le site


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Par défaut Forcer un téléchargement, ok, mais ensuite, ca bloque le site
    Bonsoir !

    J'ai effectué plusieurs recherches pour "forcer" le téléchargement d'un fichier.
    Ceci marche bien, cependant, lorsque le téléchargement débute, il est impossible de naviguer sur le site, le naviguateur tourne en boucle.
    Une fois le téléchargement fini, il est enfin possible de naviguer à nouveau.

    Nous étions 2 a naviguer sur le site, et lorsque l'un de nous deux téléchargait, alors nous étions tous deux bloqués sur les pages actuelles.

    Je pense que c'est la page "telecharger.php" qui me fait planter :

    header("Content-disposition: attachment; filename=$NomDefaut");
    header("Content-Type: application/force-download");
    header("Content-Transfer-Encoding: $type\n"); // Surtout ne pas enlever le \n
    header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger));
    header("Pragma: no-cache");
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    header("Expires: 0");
    readfile($chemin . $Fichier_a_telecharger);
    J'ai essayé de mettre un "exit()" et "break" juste après le readfile, mais rien n' fait.

    Je tiens également à préciser que ca me fait ca que sur le domaine qui utilise ce script. J'ai plusieurs sites dessus, et les autres sont "naviguables", donc la machine n'est pas plantée...

    Je vous remercie d'avance !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    Je ne suis pas assez bon pour t'explqier, mais j'ai trouvé cela sur le net et cela fonctionne correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$taille = filesize('chemin/'.$fichier);
    	header('Content-Type: application/octet-stream');
    	header('Content-Length: '.$taille);
    	header('Content-Disposition: attachment; filename="'.$fichier.'"');
    	readfile('chemin/'.$fichier);

  3. #3
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Peut-être devrais-tu mettre ce code dans un script à part et tenter de l'exécuter en arrière-plan :

    http://www.developpez.net/forums/sho...d.php?t=171540
    http://www.developpez.net/forums/sho...d.php?t=107580

    [EDIT] Voici ce qui est conseillé dans la FAQ :
    http://php.developpez.com/faq/?page=..._forcedownload

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Par défaut
    Citation Envoyé par francis m
    Je ne suis pas assez bon pour t'explqier, mais j'ai trouvé cela sur le net et cela fonctionne correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$taille = filesize('chemin/'.$fichier);
    	header('Content-Type: application/octet-stream');
    	header('Content-Length: '.$taille);
    	header('Content-Disposition: attachment; filename="'.$fichier.'"');
    	readfile('chemin/'.$fichier);
    C'est à peu prêt le code que j'avais, et ca bloque toujours le site. Dès que le téléchargement est fini... ca marche !
    Une mauvaise config de php.ini ? Ou de apache ?

    Citation Envoyé par Sub0
    Peut-être devrais-tu mettre ce code dans un script à part et tenter de l'exécuter en arrière-plan :

    http://www.developpez.net/forums/sho...d.php?t=171540
    http://www.developpez.net/forums/sho...d.php?t=107580

    [EDIT] Voici ce qui est conseillé dans la FAQ :
    http://php.developpez.com/faq/?page=..._forcedownload
    J'ai essayé de mettre la page de téléchargement en fond de tâche, mais à ce moment là, aucune fenetre de téléchargement ne s'ouvre...
    Et j'ai mit le code de la faq, rien ne se passe, sauf si je met "readfile(...)", à la fin. La aussi, le site reste bloqué (je possède un dédié pourtant).

    En tout cas, merci pour vos réponse !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Par défaut
    J'ai trouvé d'ou venait mon erreur.

    Ma page "telecharger.php" ou était les header faisait un include vers un fichier de connexion.

    session_start ();
    $myhote="xxx";
    $myuser="xxx";
    $mypass="xxx";
    $IdBase = mysql_connect($myhote, $myuser,$mypass);
    $Base = "xxx";
    mysql_select_db($Base,$IdBase) ;
    En enlevant "session_start()", tout marche parfaitement !
    Je savais qu'il ne fallait pas mettre d'html, mais je ne pensais pas aux sessions !
    Ceci n'est pas précisé dans la FAQ, ca peut être intéressant, n'ayant pas vu de solutions sur le net !

    Merci de votre aide en tout cas !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/06/2007, 15h27
  2. [PHP-JS] Forcer le téléchargement d'une image JPG
    Par Amnesiak dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2006, 23h50
  3. [Configuration] problème pour forcer le téléchargement d'un fichier
    Par All Bran dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 02/01/2006, 16h23
  4. Réponses: 1
    Dernier message: 08/09/2005, 11h01
  5. Réponses: 2
    Dernier message: 23/03/2005, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo