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 :

Téléchargement avec header


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Par défaut Téléchargement avec header
    Bonjour,

    J'ai récemment appris comment télécharger des fichiers avec php avec les header. Voici donc ma page de download.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?
    session_start();
    if($_SESSION['connect']=='true'){
    $cat=$_GET['cat'];
    $Fichier_a_telecharger=$_GET['name'];
    $Fichier_a_telecharger=str_replace('..', '', $Fichier_a_telecharger);
    $Fichier_a_telecharger=str_replace(';', '', $Fichier_a_telecharger);
    $cat=str_replace('..', '', $cat);
    $cat=str_replace(';', '', $cat);
    $chemin='/opt/'.$cat.'/';
    switch(strrchr(basename($Fichier_a_telecharger), ".")) {
    case ".gz": $type = "application/x-gzip"; break;
    case ".tgz": $type = "application/x-gzip"; break;
    case ".zip": $type = "application/zip"; break;
    case ".pdf": $type = "application/pdf"; break;
    case ".png": $type = "image/png"; break;
    case ".gif": $type = "image/gif"; break;
    case ".jpg": $type = "image/jpeg"; break;
    case ".txt": $type = "text/plain"; break;
    case ".htm": $type = "text/html"; break;
    case ".html": $type = "text/html"; break;
    default: $type = "application/octet-stream"; break;
    }
    header("Content-disposition: attachment; filename=$Fichier_a_telecharger"); 
    header("Content-Type: application/force-download"); 
    header("Content-Transfer-Encoding: $type\n"); // ne pas enlever le \n
    header("Content-Length: ".filesize($chemin . $Fichier_a_telecharger)); 
    header("Pragma: no-cache"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
    header("Expires: 0"); 
    readfile($chemin . $Fichier_a_telecharger);}
    ?>
    Alors le téléchargement se fait bien mais admettons que je me connecte avec mozilla, je lance mon téléchargement, et la je ne peux plus naviguer sur le site. Je n'ai plus accès a aucune page. Mais durant ce téléchargement si je lance un autre navigateur genre opera, et que je me connecte, je peux trainer sur le site tranquillement.

    Est ce que quelqu'un peut m'aider s'il vous plait?

    Cordialement.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Par défaut Re
    Donc si j'enlève toute les vérification que utilisateur est bien connecté il n'y a pas de soucis pour naviguer sur le site après avoir lancé un dl. Après... je ne sais pas comment régler sa. Je voudrais absolument que l'utilisateur soit connecter pour pouvoir télécharger.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Par défaut Re
    J'ai vraiment l'impression que sa vient de mon code php, car quand je compresse un fichier que je le met a la racine. Je fais un lien direct sur le site sans utiliser mon download.php. http:/$ip/$nom.rar. La le fichier se télécharge sans soucis et je peux continuer de naviguer. Est ce que quelqu'un aurait ce genre de problème avec readfile();?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 99
    Par défaut Re
    C'est bon tout marche . Et voici le code si un jour sa peut aider certains. Il fallait désactiver le temps d’exécution et casser la session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?php
    // désactive le temps max d'exécution
    set_time_limit(0);
     
    session_start();
    $cat=$_GET['cat'];
    $name = $_GET["file"];
    str_replace("..","",$name); 
    str_replace("..","",$cat); 
    str_replace(";","",$name); 
    str_replace(";","",$cat); 
     
    if ($_SESSION["connect"]!=true) {
        header ("Refresh: 0;URL='/index.php?page=Erreur&id=3'");
        exit;
    }
     
    if (empty($_GET["file"])) {
        header ("Refresh: 0;URL='/index.php?page=Erreur&id=5'");
        exit;
    }
     
    if(basename($_GET["file"]) != $_GET["file"]) {
        header ("Refresh: 0;URL='/index.php?page=Erreur&id=6'");
        exit;
    }
     
    $filename = dirname(__FILE__)."/../../opt/".$cat."/".$name;
    if (!is_file($filename) || !is_readable($filename)) {
        header("HTTP/1.1 404 Not Found");
        exit;
    }
    $size = filesize($filename);
    // désactivation compression GZip
    if (ini_get("zlib.output_compression")) {
        ini_set("zlib.output_compression", "Off");
    }
     
    // fermeture de la session
    session_write_close();
     
    header("Cache-Control: no-cache, must-revalidate");
    header("Cache-Control: post-check=0,pre-check=0");
    header("Cache-Control: max-age=0");
    header("Pragma: no-cache");
    header("Expires: 0");
    header("Content-Type: application/force-download");
    header('Content-Disposition: attachment; filename="'.$name.'"');
    header("Content-Length: ".$size);
    readfile($filename);
    Merci quand même.

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

Discussions similaires

  1. Téléchargement automatique avec header()
    Par pdtor dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2007, 12h15
  2. Réponses: 3
    Dernier message: 11/04/2006, 10h00
  3. Problème avec header & session_s
    Par cristolb dans le forum Langage
    Réponses: 8
    Dernier message: 31/01/2006, 00h38
  4. [JpGraph] problème avec header
    Par ciesco dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/01/2006, 17h02
  5. [Système] Problème avec header() ...
    Par tom06440 dans le forum Langage
    Réponses: 15
    Dernier message: 27/10/2005, 21h33

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