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

PHP & Base de données Discussion :

telechargement de fichier ne fonctionne pas en ligne


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut telechargement de fichier ne fonctionne pas en ligne
    bonjour

    je ne comprend pas mon fichier de téléchargement fonctionne bien en local mais pas en ligne.

    il faut faire quelque chose ?
    hébergeur mutualisé, c'est eux qui peuvent bloquer ?

    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
     // Définition des en-têtes
      header("Content-disposition: attachment; filename=$nomcom.$datecom.txt");
      header("Content-Type: application/force-download");
      header("Content-Transfer-Encoding: application/octet-stream\n"); // Surtout ne pas enlever le \n
      header("Pragma: no-cache");
      header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
      header("Expires: 0");
     
     
     
        if(isset($_POST['telcharg']) AND $_POST['telcharg'] == "download")
     
        {
     
      $list = $bdd->query("SELECT * FROM table WHERE user = '$nomcom' AND date = '$datecom'");
     
       while ($elemnts= $list->fetch())
     
      {
        echo $elemnts['code']."\r\n";
      }
     
    }
    ça ne lance pas le téléchargement pas d'erreur dans url me fait montrer le page ou il y a le code alors qui devrait lancer le téléchargement...

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    Les serveurs peuvent réagir différemment aux en-têtes HTTP que tu utilises.

    ça ne lance pas le téléchargement pas d'erreur dans url me fait montrer le page ou il y a le code alors qui devrait lancer le téléchargement...
    Tu t'exprimes bizarrement, faudrait ponctuer un peu
    Le code source PHP est affiché ? Si oui comment le script s'appelle-t-il et comment est-il appelé ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Content-Type: application/force-download");
    header("Content-Transfer-Encoding: application/octet-stream\n"); // Surtout ne pas enlever le \n
    Pourquoi un \n ? Je n'ai jamais eu besoin d'en ajouter, on peut même imaginer qu'il fausse l'en-tête HTTP si PHP ne gère pas cela.

    Normalement pour forcer le téléchargement d'un .txt ceci suffit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header("Content-Disposition: attachment; filename={$nomcom}.{$datecom}.txt"); // "attachment" force le DL
    header('Content-Type: text/plain'); // C'est un fichier texte, alors on utilise le type MIME adéquat
    echo '...';

  3. #3
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Est-ce le seul fichier en PHP ?
    Si ce n'est pas le cas, c'est le seul qui pose problème ? Si oui, est-il dans un sous-dossier par rapport aux autres qui fonctionnent ?

    Si le serveur affiche le code plutôt que de l'interpréter (si j'ai bien compris grâce à @Séb ^^) il peut s'agir de 3 solutions :
    1. l'extension du fichier n'est pas reconnue par le serveur (par défaut, l'extension d'un fichier PHP doit être .php, il existe des variantes mais passons)
    2. le serveur ne possède pas PHP. Ca arrive sur certains hébergements gratuits. Par facilité et sécurité, seul l'HTML est autorisé et il n'y pas d'interpréteur PHP donc ce n'est pas possible d'utiliser des fichiers PHP
    3. le serveur possède bien PHP mais est mal configuré. Dans ce cas, le serveur tentera de forcer le téléchargement du fichier et non afficher son contenu habituellement donc je doute que ça soit ce cas de figure

  4. #4
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut
    bonjour
    j'ai mis ton code et fonctionne bien en local et pas en ligne.

    page de mon formulaire
    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
     
    <form action="./admin/Code/downcode.php" method="post">
    <span class="bleu">Télécharger la commande de code.</span><br />
    Choisir la commande des codes par Date.<br>
    <input type="hidden" name="telcharg" value="download"/>
    <select name="datecom">
    <?php
     
    $telecod = $bdd->query("SELECT * FROM code ORDER BY date DESC");
    if ($telcod1 = $telecod->fetchall()){
    foreach ($telcod1 AS $telecod1)
    {
    	$datcoma = $telecod1['date'];
    	$namecoma = $telecod1['user'];
    	if($derndate != $datcoma)
    	{
    	?>
    	<option value="<?php echo $datcoma; ?>"><?php echo ' Commande de '.$namecoma.' à la Date du '.$datcoma; ?></option>
    	<?php
    	$derndate = $datcoma; 
    }}}
    ?>
    </select>
    <input type="submit" value="Valider"/>
    </form>
    dans le fichier downcode.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
    34
    35
    36
     
    if (isset($_POST['datecom']))
    {
    $datecom = $_POST['datecom'];
    $rechuser = $bdd->prepare("SELECT * FROM code WHERE date = :date");
    $rechuser->execute(array(
    	"date" => $datecom
    ));
    $rechuser = $rechuser->fetch();
    	$nomcom = $rechuser['user'];
     
     
    $datecom = preg_replace('/([^.a-z0-9]+)/i', '_', $datecom);
    	// telecharger liste des codes de la commande  
      // Définition des en-têtes
     
     
      header("Content-Disposition: attachment; filename={$nomcom}.{$datecom}.txt"); // "attachment" force le DL
    header('Content-Type: text/plain');
     
     
     
    	if(isset($_POST['telcharg']) AND $_POST['telcharg'] == "download")
     
    	{
     
      $list = $bdd->query("SELECT * FROM codeWHERE user = '$nomcom' AND date = '$datecom'");
     
       while ($elemnts= $list->fetch())
     
      {
    	echo $elemnts['code']."\r\n";
      }
     
    }
    }
    en ligne: après validation du formulaire dans mon url : /admin/Code/downcode.php
    en local: je reste bien ou il y a le formulaire et ouvre le téléchargement

  5. #5
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Rebonjour,


    En ligne, que se passe-t-il sur la page /admin/Code/downcode.php ?
    Qu'est-ce qui est affiché ?

    As-tu vérifié ta requête SQL te retournait bien un résultat ?
    T'es-tu renseigné concernant les 3 points que j'ai évoqué ?

    Il faudrait essayer d'être plus explicite que simplement répéter "ça marche pas" si tu souhaites te faire aider.

    SELECT * FROM codeWHERE j'imagine que ceci est une erreur de copier/coller ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Pour le plaisir
    Inscrit en
    Novembre 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pour le plaisir
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2012
    Messages : 178
    Par défaut
    En ligne, que se passe-t-il sur la page /admin/Code/downcode.php ? rien
    Qu'est-ce qui est affiché ? page blanche

    As-tu vérifié ta requête SQL te retournait bien un résultat ? comment faire ? si ça fonctionne en local ma requête doit être bonne
    T'es-tu renseigné concernant les 3 points que j'ai évoqué ? tous mon site en php fonctionne

    Il va falloir être plus explicite que simplement répéter "ça marche pas" si tu souhaites te faire aider. : je ne vois comment expliquer autrement... j'ai mis mes codes

    SELECT * FROM codeWHERE j'imagine que ceci est une erreur de copier/coller ? oui

    Bon j'ai tester dans un fichier test en racine et ça fonctionne.... donc ça vient de ma partie admin qui est blindé d'include avec des sous_menu dans tous les cotés...mais comprend toujours pas pourquoi ça fonctionne en local.

  7. #7
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    Il peut y avoir des versions et des configs PHP différentes, des serveurs HTTP et des configs différentes
    Tout cela (a minima) peut expliquer des comportements différents

    Déjà si tu as une page blanche cela veut dire que tu n'exécutes même pas ta boucle de echo
    Il faut débuguer, de manière classique, pour voir où ça bloque
    Met des echo un peu partout pour savoir

    donc ça vient de ma partie admin qui est blindé d'include avec des sous_menu dans tous les cotés...
    Là on parle d'un script de téléchargement, donc normalement tu n'as qu'un fichier de config pour l'accès à la BdD à inclure, et pas grand chose d'autre

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

Discussions similaires

  1. [Web Service][API Google Maps] Ne fonctionne pas en ligne
    Par PRACH dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/12/2009, 10h30
  2. Son qui ne fonctionne pas en ligne
    Par totoz dans le forum Flash
    Réponses: 1
    Dernier message: 02/04/2009, 20h57
  3. Les lien ne fonctionne pas en ligne
    Par Loadlucas dans le forum Flash
    Réponses: 2
    Dernier message: 22/12/2008, 19h02
  4. [CKEditor] ne fonctionne pas en ligne
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 28/06/2007, 16h37
  5. [HTML] [FLASH MX2004] Ne fonctionne pas en ligne
    Par Invité4 dans le forum Flash
    Réponses: 8
    Dernier message: 31/10/2005, 14h53

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