Ouverture pdf via php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ouverture pdf via php

par hpl76 » 28 oct. 2008, 16:36

Le code final est le suivant :
<?php
if(!empty($_GET["id"])){
$nom = substr($_GET["id"],2,3).substr($_GET["id"],7,3).substr($_GET["id"],29,3);
if (file_exists($nom.'.pdf')) {
$mdnom = substr(md5($nom),0,10);
switch(strrchr(basename($nom), ".")) { 
case ".gz": $type = "application/x-gzip"; break; 
case ".tgz": $type = "application/x-gzip"; break; 
case ".zip": $type = "application/zip"; break; 
case ".pdf": $type = "application/pdf"; break; 
case ".png": $type = "image/png"; break; 
case ".gif": $type = "image/gif"; break; 
case ".jpg": $type = "image/jpeg"; break; 
case ".txt": $type = "text/plain"; break; 
case ".htm": $type = "text/html"; break; 
case ".html": $type = "text/html"; break; 
default: $type = "application/octet-stream"; break; 
} 
header("Content-disposition: attachment; filename=".$mdnom.'.pdf');  
header("Content-Type: application/force-download");  
header("Content-Transfer-Encoding: $type\n");
header("Content-Length: ".filesize($nom.'.pdf'));  
header("Pragma: no-cache");  
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");  
header("Expires: 0");  
readfile($nom.'.pdf'); 
}else{
header ("location:index.php");
}
}else{
header ("location:index.php");
}
?>
Ce que je ne comprends pas c'est pouquoi cela ne fonctionne pas pour 5% des cas...

Bien à vous !

hpl76

par Hywan » 28 oct. 2008, 15:54

Hey :),

Est-ce que ce ne sont pas les fichiers avec des caractères non-répandus dans le nom ? Comme un accent, un espace, enfin un truc qui n'est pas conseillé.

Et comment est fait le lien entre l'identifiant et le nom du fichier ? L'identifiant est un md5() ?

Édition : et oui, l'idée de mere-teresa est bonne.

par mere-teresa » 28 oct. 2008, 15:49

Utilisez vous des header() en PHP ?
Si oui, à quoi ressemblent ils ?

par hpl76 » 28 oct. 2008, 14:55

Merci mere

Ca ne marche pas par exemple avec la config :
Acrobat reader 8, pare feu Windows et Avast 4.8.
OS : XP pack 3 et le navigateur IE 7.0.5730.11

Le script scanne l'intégralité d'un gros dossier (les pdf sont stockés physiquement à l'intérieur)
Une série de liens relative à la personne est alors générée.
Le lien se présente sous cette forme : mon_lien.php?id=89a7erf9a7erf97889a7erf9a7erf978
et dans plus de 95% des cas ca marche et pour quelques postes réticents j'ai
la fenêtre de téléchargement qui apparait bien avec 0% de mon_lien.php...
et au final une fenêtre critique "IE ne peut pas télécharger mon_lien.php de mon_site.com"
... ... ...
hpl76 :roll:

par mere-teresa » 28 oct. 2008, 13:28

Il nous manque des infos pour t'aider :
- sur quels postes ? (quelle est la différence ? Navigateur ? Os ?
- outils utilisés pour la génération du PDF ? FPDF ?
- une petite partie de ton code PHP ?

Ouverture pdf via php

par hpl76 » 28 oct. 2008, 12:38

Bonjour,

Je rencontre un souci et je ne sais pas d'où cela peut venir. Dans la grande majorité du cas ca fonctionne mais parfois sur certains postes au lieu de m'ouvrir le fichier PDF relatif au lien il veut m'ouvrir ma page telechargement.php et j'ai un message d'alerte avec croix rouge et le toutime.
Ca peut venir de quoi selon vous ?

Cordialement,

hpl76