PDF Download mit PHP

nchristoph

Erfahrenes Mitglied
Hallo zusammen,

ich tüftle gerade an einer Funktion zum Download von PDF Dateien.

Der Pfad zur Datei wird in einer Datenbank gespeichert.

Mein Code schaut momentan so aus:

PHP:
<?php

if(isset($_GET['pfad'])){
	 
	
$DbCon->DoSQL(" SELECT 
						Holzart,
						Starke,
						Partie,
						Pfad,
						Trockenheit,
						Klasse
				    FROM
				   		suchmaschine
					WHERE
						 Pfad = '".$_GET['pfad']."'");
	$row = $DbCon->GetResObject();
	
	$Pfad = $row->Pfad;
	$pfadneu = str_replace("./", "", $Pfad);
	//$pfad = str_replace(" ","%20", $pfadneu);
	//echo $pfad; 
	
	header('Content-disposition: attachment; filename='.$row->Partie.'.pdf');
	header('Content-type: application/pdf');
	readfile($pfadneu);
	//exit;
}
?>

Es wird ein Download gestartet, allerdings ist die Datei, welche erstellt wird, nicht mit Acrobat zu öffnen.

Was mache ich falsch?

Die Variablen, wenn ich sie mir einzeln ausgeben lasse, werden richtig befüllt.
 
Hi

Wie schaut denn die heruntergeladene Datei im Inneren aus (binärmäßig)?
Im Zweifelsfall mal hier raufladen, dann kann man es sich selbst anschauen.
 
Zum eigentlichen PDF-Inhalt ist da HTML in die Datei dazugepackt.
Dein gezeigter Code ist wohl nur ein Teil von dem, was da als Attachment gesendet wird.
Da darf sonst kein CMS etc. etwas dazu ausgeben.

Außer Strukturellem und etwas JS ist vor allem das da:
HTML:
<body><div class="suchmaschine">
<table style="width:100%;height:100%;" border="0">
  <span class="bildschirm"><tr>
   <td height="40" colspan="2" scope="col"><h1>Masslisten Suchmaschine</h1></td>
  </tr></span>
  <tr>
  <span class="bildschirm"> <td style="width:250px"  align="left" valign="top"><div class="menu">
  <h1>Suchmaschine</h1>
  <ul>
    <li><a href="index.php?p=start">Suche</a></li>
    <li><a href="index.php?p=add">Eintrag Hinzuf&uuml;gen</a></li>
    <li><a href="index.php?p=edit">Eintrag &auml;ndern</a></li>
    <li><a href="index.php?p=delete">Eintrag l&ouml;schen</a></li>
    <li><a href="index.php?p=suchealt">Alte Variante</a></li>
    <li><a href="index.php?p=abmass">Abmass</a></li>
    <li><a href="index.php?p=massmail">Mail</a></li>
    <li><a href="index.php?p=ersetzen">Massliste ersetzen</a></li>
  </ul>
    </ul>
  <h1>Trockenkammer</h1>
  <ul>
    <li><a href="index.php?p=kammersuche">Suche</a></li>
    <li><a href="index.php?p=kammeradd">Eintrag Hinzuf&uuml;gen</a></li>
    <li><a href="index.php?p=kammeredit">Eintrag &auml;ndern</a></li>
    <li><a href="index.php?p=kammereintragloschen">Eintrag löschen</a></li>
    <li><a href="index.php?p=bericht">Kammer Bericht</a></li>
    <li><a href="index.php?p=iv">Inventurbestätigung</a></li>
    <li><a href="index.php?p=summe">Summe Kammern</a></li>
  </ul>
    <h1>Verwaltung</h1>
  <ul>
    <li><a href="index.php?p=holzartadd">Holzart Hinzuf&uuml;gen</a></li>
    <li><a href="index.php?p=starkeadd">St&auml;rke Hinzuf&uuml;gen</a></li>
    <li><a href="index.php?p=trockenadd">Trockenheit Hinzuf&uuml;gen</a></li>
    <li><a href="index.php?p=klasseadd">Klasse Hinzuf&uuml;gen</a></li>
    <li><a href="index.php?p=tkammeradd">Kammer Hinzuf&uuml;gen</a></li>
  </ul>
</div>

Wenn man das HTML-Zeug im Hexeditor händisch rausnimmt bekommt man ein gültiges PDF (siehe Anhang).
 

Anhänge

Ok dann jetzt noch die Frage: Wie mache ich das mit PHP, das nur die PDF Datei heruntergeladen wird?

Der Code ist meine komplette download.php.
 
Hm. Da die Header ja eig. korrekt kommen...
sicher, dass die Datei auf Pfad $pfadneu selbst in Ordnung ist?
Vllt. mal direkt über FTP etc. holen und schauen, ob die ein gültiges PDF ist.

Zur download.php nochmal: SQL-Injection-Gefahr.
 
Hab es jetzt hingekriegt:

Ich rufe jetzt die Download.php direkt auf mit dem GET Parameter.

Zur Injection-Gefahr. Werd ich noch ausbessern.

Danke
 
Zurück