banneer2

Réducteur d'URL tinad:

Collez l'adresse du site:

Rechercher sur le blog du grouik:

Modif 28/06/2010: Envoi du type mime au navigateur.
Modif 28/06/2010: Mon script de 19 lignes seulement ouvrait une faille permettant de remonter les dossiers, expliquée là. Correction

Je souhaite pouvoir envoyer un fichier via un script php au navigateur. C'est à dire que l'URL de ce dernier sera du genre : http://www.blog-du-grouik.tinad.fr/fichier.php?filename=nomdufichier.plop

l'intéret est par exemple de pouvoir autoriser ou non le téléchargement du fichier. On peut imaginer de fournir en fait un fichier différent en fonction du navigateur ou de la langue etc...

Tout d'abord, je créé un repertoire sur mon site nommé fichiers, dans lequel je place un pdf pour les tests. http://blog-du-grouik.tinad.fr/fichiers/la-rose-et-le-reseda.pdf

A présent, comme je ne souhaite pas que les gens y aient accès, j'ajoute un .htaccess qui contient basiquement ça:

order deny,allow
deny from all

je teste le lien ci dessus, et je tombe sur la page forbidden. Ça tombe bien c'est ce que je voulais.

A présent, le script php. la fonction principale est header()

<?php
 
//tester si le fichier existe
if((!file_exists("fichiers/".$_GET['filename'])) OR (strpos($_GET['filename'],'..')!==false))
{
	//ce n'est pas le cas, on envoit l'header 404
	header("HTTP/1.0 404 Not Found");
	echo file_get_contents("404/404.htm");
	//puis on quitte le script
	die;
}
//on indique le mime (type) du fichier
header('Content-type: '.mime_content_type('fichiers/'.$_GET['filename']));
//on indique le nom du fichier:
header('Content-Disposition: attachment; filename="'.$_GET['filename']);
//on envoie le fichier source
readfile("fichiers/".$_GET['filename']);
 
?>

test: http://blog-du-grouik.tinad.fr/fichiers.php?filename=la-rose-et-le-reseda.pdf

ça marche tadaaam

Pour la petite explication, le .htaccess est un paramétrage du serveur web apache, qui bloque l'envoi en http ou https, mais il ne bride pas l'user unix utilisé par php (www-data).

J'en avais besoin pour la GED, je retourne coder.

Ajouter un commentaire

Nom ou pseudo:
Adresse email:
Site web (facultatif):
Commentaire:

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://blog-du-grouik.tinad.fr/trackback/524

Fil des commentaires de ce billet

Dans la même catégorie:
dev web


Creer un tchat (chat) en AJAX php

bulle_tchat-406.jpg
Un tchat, mélangeant les techniques suivantes: javascript, AJAX, PHP, mysql et JSON, en moins de 150 lignes. Il y a quelques mois Hempstar proposait sur ce blog sa version du chat. Comme j'ai énormément progressé dans ces langages de programmation, je me demandais si je saurai le faire, en quelques

Lire la suite...



Php, générer un e-mail avec plusieurs pièces jointes.

E-mail
Voici une fonction pour envoyer un e-mail en PHP avec des pièces jointes quelque soit leur extension (ou presque). La machine qui m'a servi à faire les tests est un champs MX du domaine, et l'adresse de l'expéditeur appartient au domaine (ça aide.) Le résultat des essais: Vers une boite e-mail free

Lire la suite...


setAttribute - Patch pour internet explorer - Javascript

Internet explorer interprète mal ou pas du tout la function setAttribute. Ci dessous mon prototype à insérer en début de script pour patcher ce navigateur. Il manque surement des cas particuliers que je n'ai pas pris en compte, il suffira de rajouter des "case" dans ce prototype.

Lire la suite...


Le sélecteur de dates en javascript Version 0.3.1

calendriers.jpg
Edit du 17/11/2011, passage en version 0.3.1 pour patcher internet explorer. test ok sur IE8 et IE 9, les autres versions n'ont pas été testées. L'objet de ce codage est de permettre l'intégration simple (#feignasse) sur des sites web d'un sélecteur de date plus sexy que 3 listes déroulantes. Je me

Lire la suite...


Un filtre antispam supplémentaire pour dotclear

kill the spam
J'ai remarqué que les spammeurs qui sévissent sur mon blog, ont souvent ces deux points communs: Le nom de l'auteur contient la description du site dont il fait la promotion, souvent plus de trois mots. Il a renseigné un lien vers un site internet, évidemment. Vu que dans les commentaires légitimes,

Lire la suite...


Propulsé par Dotclear