Archives par mot-clé : header

Plusieurs CSS sur une seule page

Publié dans HTML et CSS | Laisser un commentaire

J’ai découvert aujourd’hui comment appliquer plusieurs feuilles de styles sur une seule et même page. J’avais essayé plusieurs fois sans réel succès, pourtant cela peut être très pratique pour séparer son code.

Un fichier CSS sur une page

<link rel="stylesheet" type="text/css" href="fichier.css" />

Pour proposer des designs alternatifs, on emploie le mot clef alternate.

<link rel="alternate stylesheet" type="text/css" title="Titre du design" href="fichier1.css" /> <link rel="alternate stylesheet" type="text/css" title="Autre titre du design" href="fichier2.css" />

C’est le premier qui sera utilisé par défaut.

Plusieurs fichiers CSS sur une page

<link rel="stylesheet" type="text/css" href="fichier1.css" />
<link rel="stylesheet" type="text/css" href="fichier2.css" />

Mais en utilisant les titres, on peut aller plus loin. L’exemple suivant utilisera les designs ayant pour titre « compact » et le design persistant (sans titre) commun.css. Mais l’utilisateur peut sélectionner les designs « beautiful », ce qui appellera aussi le design persistant.

<link rel="alternate stylesheet" type="text/css" title="compact" href="fichier1.css" />
<link rel="alternate stylesheet" type="text/css" title="compact" href="fichier2.css" />
<link rel="alternate stylesheet" type="text/css" title="beautiful" href="fichier3.css" />
<link rel="alternate stylesheet" type="text/css" title="beautiful" href="fichier4.css" />
<link rel="stylesheet" type="text/css" href="commun.css" />

Pour aller plus loin

On peut noter qu’il est possible d’utiliser une balise méta ou un header pour préciser le ou les fichiers CSS à afficher par défaut :

<meta http-equiv="Default-Style" content="compact" />
<?php
header(Default-Style: "compact");

Merci le W3C sur Lagrange !

Forcer le téléchargement d’un fichier

Publié dans PHP | Laisser un commentaire

Lorsque j’ai conçu la Bnbox v.3 j’aurais bien aimé savoir ce que j’ai découvert il y a peu. Comment forcer le téléchargement d’un fichier sur un site Web ? Par exemple un fichier PDF (so beautiful!) ou un fichier mp3 sont en général directement lus par les navigateurs récents. Mais il peut être pratique, parfois, d’éviter au visiteur la manipulation Clic droit > Enregistrer la cible du lien sous….

<?php
/**
 * Force le téléchargement d'un fichier
 * 
 * @param string $filePath Emplacement du fichier sur le serveur web
 * @param string $fileNameToDl=<em> Nom du fichier que l'utilisateur va télécharger (si on souhaite le rendre différent de celui d'origine)
 * @post Ouvre une fenêtre permettant le téléchargement du fichier
 * /
function forcerTelechargement($filePath, $fileNameToDl=</em>)
{
    header('Content-Description: Téléchargement le fichier '.$fileName);
    header('Content-Type: application/octet-stream'); // On peut mettre text/gif, etc...
    header('Content-Length: '.filesize($path.'/'.$fileName));
    header('Content-disposition: attachment; filename='.($fileNameToDl != NULL ? $fileNameToDl : basename($filePath))); // Nom du fichier téléchargé par l'utilisateur. On peut donc mettre ce qu'on veut.
    header('Pragma: no-cache');
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé pour ne vraiment pas avoir de cache
    readfile($filePath); // Ouvre le fichier dans le buffer : d'après le geader, ce sera une fenêtre de téléchargement
    exit();
}

forcerTelechargement('./document/exemple.pdf');

Continuer la lecture