PHP Header PDF Download Problem..

volcem

Lieutenant
Registriert
Dez. 2007
Beiträge
1.021
[GELÖST]Header PDF Download Problem..

Guten Tag liebe Computerbase Community,

leider weiß ich nicht wo das Problem ist, das script funktioniert auf einer anderen Seite wie es soll, nur auf der neuen Seite irgend wie nicht. Auf der alten ging es noch.

Die Fehlermeldung beim Aufruf des PDF´s sagt mir der PDF reader:

Format error, pls open a PDF file....

nun... hier mal der Code:


PHP:
if(isset($_GET["file"])) {
$filedown = mysql_real_escape_string($_GET["file"]);
$res = mysql_query("SELECT `id`,`file`,`stats` FROM `doc` WHERE `file` ='$filedown'") or die(mysql_error());
    $row = mysql_fetch_array($res);
    $id = $row["id"];
    mysql_query("UPDATE `doc` SET `stats`= stats +1  WHERE `id`='".$id."' LIMIT 1") or mysql_error();

  if(!file_exists("./doc/$filedown")) { 
    header("LOCATION: /home/technischemerkblaetter&error=pdfnotfound&file=$filedown&seite=1");
  } else {
  header("Content-type: application/pdf");
  header("Content-disposition: attachment; filename=$filedown");
  readfile("./doc/$filedown");
    }   
} else {

anderer code!

}

Also ich erkenne da keinen Fehler.
Hat jemand vielleicht einen Denkanstoß?

Lieben Dank!

*Tante edit sagt*

Hmm, der speichert den Header von der Seite mit rein, wie kann dass denn passieren?

Wenn jemand selber mal schauen will:

http://www.antischimmelpilz.de/home/technischemerkblaetter&seite=1
...

Direkt aufruf geht auch ohne Probleme, Beispiel:

http://www.antischimmelpilz.de/doc/FontecrylPP.pdf
 
Zuletzt bearbeitet:
Ohne den Rest des Codes zu kennen wird dir das vermutlich keiner sagen können.
Ich tippe mal du hast irgendwo vor dem Code hier was included (z.B. den SQL-Connect) was schon Sachen zurückgibt.
 
Der Rest ist nur die Ausgabe für die PDF Liste.
Mehr ist nicht drin, selbst wenn ich den code in eine Datei packe die nicht über /home aufgerufen wird, bekomme ich den Fehler.

PHP:
else {
include_once("include/funktion.php");
if (!isset($_GET['seite'])) {
header("location: /home/technischemerkblaetter&seite=1");
}
//TK 
##############################################
###                TODO                   ####
### 1: Erstelle eine optisch schöne TK    ####
###    Liste.                             ####
### 2: Erstelle ein Bild für die Down -   ####
###    load Leiste.                       ####
##############################################
$seite = mysql_real_escape_string($_GET["seite"]);
$eintraege_pro_seite = "12";
   $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;

echo '<div class="main"><div style="padding:05px 05px;color:#fff;">Download Technische Mekblätter:</div>';
echo '<br />';
//bild
$img = '<img src="../img/download.jpg" width="250px" height="166,5px" border="0" style="float:left;">';
echo '<div align="left" style="padding:10px;">';
//verbinde zur Datenbank
$res = mysql_query("SELECT `id`, `file`, `stats` FROM `doc` ORDER BY `id` ASC LIMIT $start, $eintraege_pro_seite");
//num
$result = mysql_query("SELECT `id` FROM `doc`");
//schleife
$num = mysql_num_rows($result);
//filesize

//header
echo '<div align="left" style="border:0px solid #000000;>"';
echo '<p>'.$img.' <br /><h2 align="center">Download</h2><div align="left">&nbsp;&nbsp;In der Regel legen wir jedem ausgelieferten<br /> &nbsp;&nbsp;Produkt ein Technisches Merkblatt bei.<br />&nbsp;&nbsp;Technische Merblätter sind sehr hilfreich,<br />&nbsp;&nbsp;bestimmte Produkte verlangen eine saubere<br />&nbsp;&nbsp;Verarbeitung bzw je nach Produkt <br />&nbsp;&nbsp;auch eine ordnungsgemäße Zubereitung.<br />&nbsp;&nbsp;Wir bieten ihnen hier die Möglichkeit,<br />&nbsp;&nbsp;Technische Merkblätter für Ihre Unterlagen,<br />&nbsp;&nbsp;erneut herunterladen zu können. </div></p><br /><p align="center">Derzeit befinden sich <b>'.$num.'</b> Dokumente in unserem Archiv</p>';
echo '<p>Hier können Sie in unseren <b>Archiv</b> alle Technischen Merkblätter einsehen, sollten Sie ein bestimmtes Technisches Merkblatt suchen, so empfehlen wir Ihnen die <b>Suche</b> zu benutzen. Diese finden Sie in der rechten Navigation.</p><br />';
echo '<table width="550px" cellpadding="2" cellspacing="2" class="box" border="0" align="center">';
while($row = mysql_fetch_array($res)){
$id = $row["id"]; $file = $row["file"]; $stats = $row["stats"];
$files = './doc/'.$file.'';
$img_pdf = '<a href="/home/technischemerkblaetter&file='.$file.'"><img src="../img/pdf.jpg" width="50px" height="50px" border="0"></a>';
$file = '<a href="/home/technischemerkblaetter&file='.$file.'">'.$file.'</a>';
$ausgabe_size = filesize($files);
$ausgabe_size = binary_multiples($ausgabe_size);
echo '<tr valign="top" class="box1"><td width="50px" style="font-size:14px;" align="left">'.$img_pdf.'</td><td style="padding:20px 100px;">'.$file.'</td><td style="padding:20px;">'.$ausgabe_size.'</td></tr>';
}
echo '</table>';
//headerende(file)
echo '</div>';

echo '<br /><hr>';
$result = mysql_query("SELECT COUNT(id) FROM `doc`"); 
$menge = mysql_fetch_row($result); 
$menge = $menge[0];
$wieviele_seiten = ceil($menge / $eintraege_pro_seite); 
echo "<br /><br /><div align=\"center\">"; 
echo "<b>Seite:</b> "; 
$url = "/home/technischemerkblaetter";
echo blaetterfunktion($seite, $wieviele_seiten, $url); 
echo "</div>";

echo '</div><br /><br />';
echo '</div><br /><br />';
}
?>

Und einen include wird nicht ausgeführt für GET->file.
Unerklärlich :/
 
Was auf jeden Fall schon mal falsch aussieht, ist in den URLs das erste "&", da muss doch beim ersten parameter ein "?" hin!
 
headers_sent() könnte dir helfen. Damit kannst du nicht nur prüfen, ob schon ein header gesendet wurde, sondern auch wie und wo. Also die 2 optionalen Parameter angeben und wenn die Funktion true zurückgibt, schauen was in den Parametern steht.

headers_sent($filename, $linenum)
 
@redeye86

nope, ist durch meine Einstellungen so, in Wirklichkeit sieht die URL so aus: index.php?home=index&bla=bla& etc pp
Mod_rewrite Einsatz.

@carom

Werde ich mal testen danke.

*edit*

Es wird kein header gesendet..
Komische Sache, und nervt mich gerade tierisch!
 
Zuletzt bearbeitet:
hmpf hätte dazu vielleicht auch mal die Kommentare lesen sollen.

Hab die Funktion nun isoliert und nun klappt es auch, mal sehen ob es auch geht wenn ich die Funktion einbinde.

Ich danke Dir!

*edit*

gg thx by

Problem gelöst, ich danke Dir, nach dem Header hätte ich wohl als letztes gesucht :(
 
Zuletzt bearbeitet:
Zurück
Oben