PHP-Antwortseite ausschalten
Matthias Binninger
- php
Folgendes:
Ich biete auf meiner Homepage Preislisten und Anfahrstskizen zum download an, momentan als doc (gezippt) und pdf-Datei. Jetzt wuerde ich gern herausfinden ob es sich tatsaechlich lohnt beide Formate anzubieten.
Bisher hab ich mit JavaScript und PHP versucht die Klicks auf die Dateien mitzuprotokolieren.
Das ganze Script sollte dabei im Hintergrund ablaufen, also ohne das PHP eine neue Seite aufruft nachdem die Infos (ich hab es mit "hidden" Formularen gemacht) übertragen wurden.
Mein PHP-Script sieht fogendermaßen aus:
@setlocale("LC_ALL", "de_DE");
$dl_time = @strftime("%A, %d. %B, %H.%M Uhr");
$fp = @fopen("dl_log.txt", "a");
$dl_string = @sprintf("$dl_time: $dl_hidden \n");
@fputs($fp, $dl_string);
@fclose($fp);
($dl_hidden ist die Formularfeldvariable)
Nach dem Schreiben in die Textdatei wird jetzt eine weiße Seite angezeigt, da aber die pdf-Dateien direkt im Browser angezeigt werden können darf das nicht passieren.
Wäre nett wenn jemand weiß wie man das verhindern kann,
Matthias Binninger
Hi Matthias
Das ganze Script sollte dabei im Hintergrund ablaufen, also ohne das PHP eine neue Seite aufruft nachdem die Infos (ich hab es mit "hidden" Formularen gemacht) übertragen wurden.
Mein PHP-Script sieht fogendermaßen aus:
@setlocale("LC_ALL", "de_DE");
$dl_time = @strftime("%A, %d. %B, %H.%M Uhr");
$fp = @fopen("dl_log.txt", "a");
$dl_string = @sprintf("$dl_time: $dl_hidden \n");
@fputs($fp, $dl_string);
@fclose($fp);
Ok, du kannst das folgender Masen loesen: Ein Downloadlink enthaelt die Datei die herrunter geladen wird als Variable. Wie du das loesst, ob mit nen "hidden" Feld in nem Formular oder einfach als ?datei=NAME als URI ist gleichgueltig. Machst du ja auch schon.
Dann lass deine Logroutine so wie sie ist. Auch in Ordnung.
Einziges was du danach machen kannst/must ist einen http header zum browser schicken, damit der weiss welche datei er anzeigen soll.
Sprich
header ( "Location: folder/$dl_hidden" ) ;
was zu beachten waere, ist das du keine Ausgabe vor dem Senden eines Headers haben kannst. Jegliches echo, print ist verboten. Es fuehrt zu einer Fehlermeldung. (Header already sent by...)
Ich hoffe das konnte dir helfen.
Tilman
» Einziges was du danach machen kannst/must ist einen http header zum browser schicken, damit der weiss welche datei er anzeigen soll.
» header ( "Location: folder/$dl_hidden" ) ;
Erst mal ein großes Danke!
Aber: der Download der .zip-Dateien klappt perfekt, anstatt die pdf-Dokumente anzuzeigen bekomme ich jetzt aber vom Acrobat Reader die Meldung:
"Diese Datei ist beschädigt und kann nicht repariert werden."
Woran könnte das liegen??
Matthias
Die Sache scheint ein IE-spezifisches Problem zu sein, Netscape (egal welche Version) und Opera zeigen die pdf-Datei ohne Probleme an.
Ich werde den Download jetzt halt einfach als zip machen.
Die Sache scheint ein IE-spezifisches Problem zu sein, Netscape (egal welche Version) und Opera zeigen die pdf-Datei ohne Probleme an.
Ich werde den Download jetzt halt einfach als zip machen.
nunja, eigentlich ist das nichts anderes als <a href="http://deinserver.de/file.pdf"> download </a>
php macht mit der datei ueberhaupt nix. dann ist deine IE version "fucked up"
Ciao tilman
dann ist deine IE version "fucked up"
Hast wohl recht...
Nachdem ich die Daten jetzt nicht mehr per Formular weitergebe sondern per URL funktionierts.
Matthias