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 :

Du bon usage de header() [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Points : 151
    Points
    151
    Par défaut Du bon usage de header()
    Salut,
    Je voudrais télécharger du serveur web où tourne php un fichier de type json.
    Après une consultation sur internet, j'ai trouvé une piste intéressante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename= index.json");
    ?>
    Le fichier à charger dans le navigateur s'appelle index.json.
    Cependant, ce fichier est écrit dans le répertoire téléchargement de mon Mac, mais ne contient aucun octets (0).
    Qu'est-ce qui coince ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je t'explique ce que tu fais : tu informes le navigateur qu'il doit se préparer à recevoir un flux de données au format json.
    Lui il se prépare, mais ne reçoit rien : où est-ce que tu lui envoies le fichier ?
    Il te manque au moins un echo après le dernier header()

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Points : 151
    Points
    151
    Par défaut Merci, mais
    Merci.
    ça marche aussi avec readfile("mon fichier.json");
    Au fait, est-il possible d'avoir la liste de tous les format de fichier du header ?
    Je m'explique :
    Il y multipart/data pour les formulaires et d'autres que j'aimerai connaitre ?
    Je suppose que les formats reconnus dépendent de la config du serveur ?

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Dans le cas d’Apache, le serveur a différents handlers pour les fichiers se trouvant dans son système de fichier, et reconnaît les types en regardant l’extension du fichier. Par exemple, un fichier avec l’extension .php est traité avec le type application/x-httpd-php et Apache le passe à son module PHP, au lieu d’envoyer le contenu brut du fichier (autrement dit le code source) au client. Les images, elles, se voient ajouter des directives de cache, etc.
    Plus d’infos : Utilisation des gestionnaires Apache

    Dans le cas des navigateurs et de HTTP en général, l’en-tête 'Content-Type' indique un type MIME, et un navigateur peut être configuré pour déclencher une action à la réception d’un type donné. Par exemple, pour le type text/html, le navigateur va le gérer lui-même en utilisant son analyseur de code HTML ; pour un format de média (image, vidéo, son), selon les capacités du navigateur, il peut le lire lui-même, proposer de l’enregistrer, ou de le passer directement à un lecteur tiers. Le choix de l’utilisateur peut être retenu pour les fois suivantes.
    Sous Windows, le navigateur peut consulter les associations de fichier dans la base de registre, ce qui fait par exemple que Firefox propose par défaut d’ouvrir un .gif avec Internet Explorer.
    Ce qu’il faut retenir de tout ça, c’est que l’action du navigateur dépend fortement des choix de l’utilisateur, et tu ne peux pas vraiment prédire ce qui va se passer côté client.

    Les types de formulaire comme multipart/form-data ou application/x-www-form-urlencoded servent plutôt à l’envoi de données vers un serveur. Mais la plupart des types sont utilisables dans les deux sens. Tout dépend de ce que la partie réceptrice est capable de traiter.

    Le type application/octet-stream est un peu particulier car il n’a jamais d’association définie (sauf si l’utilisateur a vraiment fait de la grosse bidouille), c’est donc un peu un type joker.
    Quant à l’en-tête Content-Disposition: attachment, il permet de forcer l’enregistrement du fichier, et c’est une directive que le navigateur respecte toujours.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Points : 151
    Points
    151
    Par défaut Juste encore une question s.v.p
    Merci pour cette explication détaillée.
    J'ai vu, mais pas vraiment compris qu'il existe un "Content-type" "application/json".
    Est-ce un moyen de passer un fichier json au serveur ?
    Encore merci.

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    C’est le type qui indique le format JSON. Tu peux l’utiliser du client vers le serveur, et du serveur vers le client.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 258
    Points : 151
    Points
    151
    Par défaut A savoir, donc
    Plutôt que de faire des lectures de fichiers à chaque page, j'emploierai le format "application/json".
    Merci encore et bon courage pour la recherche de travail.

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

Discussions similaires

  1. du bon usage de ONCLICK
    Par devboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/05/2007, 15h52
  2. Bon Usage : Constructeur ou Load
    Par gridin dans le forum VB.NET
    Réponses: 1
    Dernier message: 10/05/2007, 07h48
  3. [Delphi - Firebird] Comment faire bon usage des transactions?
    Par Lili21 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 07/05/2007, 20h59
  4. Quel est le bon usage des fichiers "*.bpk" ?!
    Par bnadem35 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2006, 17h31
  5. [xml] bon usage du xml
    Par Jeddo dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 02/05/2005, 16h49

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