MyBB.de Forum

Normale Version: Nachträglich header senden?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
kann ich nachträglich einen header senden? Ich möchte da später noch ein Location: $file rein haben, aber da kommt ja der Fehler mit header already send usw.
Kann ich denn trotzdem irgendwie einen header senden?
Nein, das ist nicht möglich, da Header immer vor allem anderen an den Browser geschickt werden müssen.
Zitat:Beachten Sie, dass Sie die Funktion header() aufrufen müssen, bevor Sie irgendeine andere Art von Ausgabe (seien es normale HTML-Tags, Leerzeilen in einer Datei oder von PHP) zum Client schicken
Quelle: http://de.php.net/manual/de/function.header.php
Und kann ich irgendwie anders diese Weiterleitung hinbekommen? Oder kann ich die Ausgaben erst mit diesem ob_start() usw. unterdrücken, und dann noch den Location: $link Header senden?
Oder schließt das MyBB das senden der Header wirklich ganz ab?
Was hast du denn genau vor? Ich würde sagen, du kannst die Ausgabe per ob_start zurückhalten, aber wirklich bestätigen kann ich es nicht.
Ich habe einen Download Bereich mit Countern erstellt, wenn man jetzt auf Download klickt, dann wird der Counter mit PHP um eins erhöht, und dann soll zum Download weitergeleitet werden.
Derzeit mache ich es mit Javascript. Da habe ich aber das Problem, dass nicht alle JavaScript aktiviert haben und, dass man dann eine angeladene Seite zu Gesicht bekommt, weil JavaScript ja sofort nach dem Donload ausgeführt wird. Dem entsprechend zerhackt sieht die Seite dann aus; das Download Fenster ist zwar da, aber die zurückgebliebene Seite sieht halt nicht mehr so pralle aus.
Mit festen Zeiten, also meintet wegen eine Sekunde warten, bevor weitergeleitet wird, möchte ich nicht, da diejenigen, die eine langsame Internetverbindung haben, dann nur mit Glück die vollständige Seite angezeigt bekommen.
Und wie gesagt: der größte Haken bei der Sache: Es sollte auch ohne JavaScript funktionieren. (Weiterleitung mit Meta-Angabe habe ich früher mal gemacht, glaube aber, dass die sehr lange braucht um sich zu aktivieren.)
Wenn ich dich richtig verstehe würde ich das über eine neue Datei lösen. Per GET wird die ID/die URL zum Download übergeben, das Skript zählt den Download und leitet dann per header() weiter. Die Datei selbst hat sonst keine Ausgabe.
...ok, kannst du das in ein kurzes Beispiel fassen?? Big Grin

Dave

PHP-Code:
<?php
$id 
intval($_GET['id']);
$query mysql_query("SELECT url, count FROM `mybb_downloads` WHERE `id`='$id'");
$download mysql_fetch_array($query);
$newcount = ++$download['count'];
$query mysql_query("UPDATE `mybb_downloads` SET `count`='$newcount' WHERE `id`='$id'");
$url "http://www.deineurl.tld/".$download['url'];
header(Location$url);
?>
So ungefaehr koennte es aussehen. Du musst natuerlich die Datenbankquerys entsprechend anpassen.