Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2007, 22h37   #1
Candidat au titre de Membre du Club
 
Franck Matsos
Étudiant
Inscription : décembre 2007
Messages : 70
Détails du profil
Informations personnelles :
Nom : Franck Matsos
Âge : 22
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 70
Points : 14
Points : 14
Par défaut Forcer un téléchargement par URL dynamique

Bonsoir.

Cela fait quelques jours que je but sur un bout de code pour mon site. Je voudrais proposer en téléchargement des fichiers, sans que le visiteur ne connaisse le répertoire de stockage.
Pour cela, j'utilise donc un fichier get.php qui récupère les infos nécessaires dans l'URL pour fournir le fichier. J'ai droit à quelques warnings de la part des header (Cannot modify header information - headers already sent by...), qui ne sont pas bien graves, mais en plus au lieu de me fournir le fichier, j'ai droit à une page HTML incompréhensible.
Voici le code de mon script get.php :
Code :
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
<?php 
if (isset($_GET['file']) && isset($_GET['type']) && isset($_GET['format'])) // Si le visiteur veut télécharger un fichier
{	
		if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) 
		{
			$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
		} 
 
		elseif (!empty($_SERVER['HTTP_USER_AGENT'])) 
		{
			$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
		}
 
		$name = htmlentities($_GET['file'], ENT_QUOTES); // sécurisation de la variable
		$type = htmlentities($_GET['type'], ENT_QUOTES); // sécurisation de la variable
		$format = htmlentities($_GET['format'], ENT_QUOTES); // sécurisation de la variable
 
		if($type == "video")
		{
			$file = "downloads/videos/".$name.".".$format;
 
			if (eregi('MSIE[[:space:]]+[0-9]+\.[0-9]+', $HTTP_USER_AGENT)) 
			{ //if browser is IE compatible
				header('Content-Type: application/octetstream');
				header('Content-Disposition: inline; filename="'.$name.$format.'"');
				header('Expires: 0');
				header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
				header('Pragma: public');
			} 
 
			else 
			{ //if browser is not IE compatible
				header('Content-Type: application/octet-stream');
				header('Content-Disposition: attachment; filename="'.$name.$format.'"');
				header('Expires: 0');
				header('Pragma: no-cache');
			} 
			//header("Location : $dir".$name.$format."");*/
			readfile($file);
		}
}
?>
Et l'allure de mon URL :
Code :
http://furankum.free.fr/get.php?file=Stripped&type=video&format=wmv
Pour info, je suis hébergé chez Free (ça se voit à l'URL ).

Merci et bonne soirée
Furanku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 13h43   #2
Membre expérimenté
 
Inscription : janvier 2007
Messages : 622
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 622
Points : 555
Points : 555
Bonjour,
Essayes de faire content_type="video/x-ms-wmv"

Je n'ai pas vraiment essayé mais ton code fonctionne tel quel s'il s'agit d'un fichier zip. Donc, pour moi il s'agit d'un problème de MIME.
kabkab est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 17h28   #3
Candidat au titre de Membre du Club
 
Franck Matsos
Étudiant
Inscription : décembre 2007
Messages : 70
Détails du profil
Informations personnelles :
Nom : Franck Matsos
Âge : 22
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 70
Points : 14
Points : 14
J'ai essayé plusieurs content-type (videos) et le résultat est toujours le même.
Furanku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 17h53   #4
Membre éclairé
 
Avatar de alceste
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 320
Points : 320
commence déjà par faire en sorte de ne plus avoir de warning.
alceste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 18h34   #5
Candidat au titre de Membre du Club
 
Franck Matsos
Étudiant
Inscription : décembre 2007
Messages : 70
Détails du profil
Informations personnelles :
Nom : Franck Matsos
Âge : 22
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 70
Points : 14
Points : 14
Je veux bien, mais à part les ignorer (avec '@'), je ne vois pas comment les virer... Ma page ne contient aucun code HTML, et mon code aucune commande pouvant envoyer un en-tête HTTP, et j'ai pourtant des warnings.
Il n'y a ni espace ou caractère en début de fichier non plus. Donc ne plus avoir de warning, ok, mais comment ?
Furanku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 19h27   #6
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
Citation:
Il n'y a ni espace ou caractère en début de fichier non plus. Donc ne plus avoir de warning, ok, mais comment ?
Si la preuve.

Tu as sûrement un caractère invisible en début de fichier (possible avec UTF8 et le Byte Order Mark (BOM) à vérifier dans ton editeur.

Un peu d'info :

http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2007, 21h28   #7
Candidat au titre de Membre du Club
 
Franck Matsos
Étudiant
Inscription : décembre 2007
Messages : 70
Détails du profil
Informations personnelles :
Nom : Franck Matsos
Âge : 22
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 70
Points : 14
Points : 14
C'est bon, les téléchargements fonctionnent
Je ne savais pas que UTF-8 BOM ajoutait des en-têtes, j'ai appris quelque chose ^^

Donc je vais voir en mettant en UTF-8 sans BOM, sinon je laisserai en ANSI.
Merci pour votre aide
Furanku est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h38.


 
 
 
 
Partenaires

Hébergement Web