Code php plante help une débutante

Fermé
flo - 7 déc. 2009 à 16:36
 flo - 9 déc. 2009 à 19:45
Bonjour,

J'ai construit une unique page html qui sert à télécharger 4fichiers pdf assez lourds.
Pour ne pas que le visiteur attende une éternité avant de pouvoir voir le pdf je voudrais forcer la fenêtre de téléchargement à s'ouvrir lorsque le visiteur clique sur le lien quel que soit le navigateur , car IE et Firefox ne réagissent pas du tout de la meme facon et pour l'instant IE ouvre le fichier directement dans le navigateur.

J'ai pompé un code php sur internet mais étant ultra débutante en php j'ai beaucoup de mal à l'intégrer dans ma page html. Voici mon code



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Mxxxxxxxxxx </title>

       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="index.css" />

<?php
header("Content-Disposition: attachment; filename=".$GET['id'].";" ); 
		
$filename = $_SERVER['DOCUMENT_ROOT'] ."pdf/b.pdf";           ligne 8
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename ='.basename($filename));
header("Content-Type: application / pdf");
header("Content-Transfer-Encoding: binary");
//header('Content-Length:'.Taille du fichier($filename));
readfile($filename);                                         ligne 17
?>
		
 </head>
   <body>
   
<div id="global">
		
		<h1> titre</h1>
		
<p>Nous mettons également à votre disposition les présentations de nos intervenants:</p>

	
<div id="presentation">
	<ul>
	
		<li> Présentation de Monsieur B. A télécharger
		<a href="pdf/b.pdf?id=15"  title="présentation de Monsieur B"> ICI </a> </li>	
		
		<li> Présentation du Docteur C. A télécharger
		<a href="pdf/c.pdf" title="présentation du Docteur C"> ICI </a> </li>
		
		<li> Présentation du Docteur R . A télécharger
		<a href="pdf/r.pdf" title="présentation du Docteur R"> ICI </a> </li
		
		<li> Présentation de Monsieur Bé. A télécharger
		<a href="pdf/berard.pdf" title="présentation de Monsieur Bé"> ICI </a> </li>

		
	</ul>
</div>




J'ai essayé de faire en sorte que le code soit le plus clair possible. J'espère que c'est lisible. Je test d'abord ce code sur le 1er fichier: b.pdf

LE PROBLEME:

Firefox: ne charge plus la page index.php mais ouvre directement la fenêtre de téléchargement du fichier pdf.
IE: ouvre bien la page index mais avec les messages d'erreurs que voici:

Notice: Undefined variable: GET in C:\wamp\www\mayactu2\index.php on line 8

Warning: readfile(C:/wamp/www/pdf/b.pdf) [function.readfile]: failed to open stream: No such file or directory in C:\wamp\www\mayactu2\index.php on line 17


Où est le problème?
Pour info je teste en local pour l'instant.

Merci d'avance pour votre aide précieuse.
A voir également:

1 réponse

Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
7 déc. 2009 à 16:48
Bonjour,

Les fonctions que tu tentes d'utiliser ici sont utiles lorsque tu génères un PDF et non pour ce que tu veux en faire.

La en clair tu dis d'abord que cette page est une page html puis tu dis que c'est un document PDF. Normal que les navigateurs ne s'y retrouvent plus.

Tu es partie sur une mauvaise piste et je n'ai pas de piste concernant le forçage du paramétrage du navigateur concernant l'ouverture ou le téléchargement des fichiers.
Si tu veux ouvrir directement tes pdf dans Firefox, télécharges Foxit Reader... Ce qui veut dire que l'ouverture ou la sauvegarde ne nait pas du code mais de la capacité du navigateur à afficher le contenu reçu : je peux : j'affiche, je peux pas : je propose de télécharger.

Pour preuve, va dans outils, option, application de firefox 3.5 et tu verras que c'est le navigateur qui choisit s'il doit ouvrir ou télécharger.

Cf la fonction header : https://www.php.net/manual/fr/function.header.php (exemple #1 dans ton cas)

Cordialement,
Archeus
0
Merci Archeus de t'interresser à mon problème.

Donc d'après toi ce n'est pas possible.

J'ai également trouvé ce code javascript sur google qu'en pense tu? Mauvaise piste également?


En javascript, force la fonction download:

# <SCRIPT language="JavaScript">
# <!--
# function Download(){
# // Donne l'url du fichier ici :
# var adresse= adresse_de_mon_fichier;
# document.writeln('<HTML><HEAD><META HTTP-EQUIV="Refresh" CONTENT="1;URL=' + adresse + '"></HEAD><BODY>Downloading...</BODY></HTML>');
# }
# -->
# </SCRIPT>
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447 > flo
7 déc. 2009 à 17:07
Non la c'est de la redirection.

Comment aurais-tu pu te répondre toute seule? Il suffit simplement que tu crèes un fichier test.htm avec comme contenu :
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title></title></head><body>
 aa
  <SCRIPT language="JavaScript">
 <!--

 // Donne l'url du fichier ici :
 var adresse= "https://unfccc.int/resource/docs/convkp/kpfrench.pdf";
 document.writeln('<HTML><HEAD><META HTTP-EQUIV="Refresh" CONTENT="1;URL=' + adresse + '"></HEAD><BODY>Downloading...</BODY></HTML>');

 -->
 </SCRIPT>
 
 </body></html>

et l'ouvrir avec IE pour te rendre compte que ceci lira le PDF.
0
flo > Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022
9 déc. 2009 à 19:45
Bonsoir Archeus,

Excuse moi du retard mais je n'ai eu le temps de réfléchir à ce problème qu'aujourd'hui.
Je te remercie de ton aide. Mais tout cela n'est pas encore de mon niveau je vais m'y prendre autrement.
Merci de ton aide.
0