Als Text oder Javascript ausgeben

Cusco

Erfahrenes Mitglied
Hi,

wie erkläre ich den Browser und Suchmaschinen, das es sich um eine Standart Text Ausgabe oder um eine Javacript - Datei handelt?

Ich habe folgenes versucht:

header("Content-Type: text/plain");
header("Content-disposition: inline; Daten.txt");

Aber da meldet der Browser nur das man die xxx.php datei auf der Festplatte speichern kann, er soll die Datei aber als Standarttext anzeigen und als Daten.txt speichern wenn der User auf Seite speichern im Browser geht.

Und Javascript soll als Javascript angesehen werden und nicht als Text oder gar HTML, Google führte meine über php kreierte Javascript Datei sogar in ihren Index bis ich sie per robots.txt sperrte.
 
Der Inhaltstyp von Klartext ist „text/plain“, der von JavaScript „text/javascript“ beziehungsweise seit Kurzem „application/javascript“. Die Angabe eines Dateinamens kann im „filename“-Parameter des „Content-Disposition“-Header-Felds gemacht werden:
Code:
Content-Disposition: inline; filename=Daten.txt
 
Danke, das mit dem Text und dem Dateinamen klappt jetzt :)

Der Text ist aber eigentlich eine CSV-Datei mit Daten des Datensatzes, sie dient als Exportfunktion. Dann dachte nennst den Typ einfach in text/csv um und nun meldet der IE das die Datei auf den Rechner runter geladen werden kann -> genau das was ich zuerst vor hatte.

Das mit den Javascript will ich jetzt testen :)
 
Wenn die Browser einen Inhaltstyp nicht kennen, so also auch nicht wissen, wie sie damit umgehen sollen, werden sie einfach nur heruntergeladen.
 
Wenn die Browser einen Inhaltstyp nicht kennen, so also auch nicht wissen, wie sie damit umgehen sollen, werden sie einfach nur heruntergeladen.

Ich vermute das kaum ein Browser CSV kennt oder?

Weiteres Problem mit dem Javascript, das php generierte Javascript landet jetzt anscheint im Cache des Browers, es wird nicht mehr jedes mal aktuallisiert, zumindest nicht auf allen seiten. Das JS enthält eine Counterausgabe die nun nicht mehr richtig Zählt. Wie erreiche ich das die Datei jedes mal neu geladen wird? Ist das überhaupt möglich?
 
Du musst dafür sorgen, dass die gesendeten Daten dem Browser für das Caching missfällt. Das ist beispielsweise möglich, indem du einen Verfallszeitpunkt angibst. Wenn dieser in der Vergangenheit liegt, gelten die Daten als veraltet und werden bei der nächsten Anfrage ebenfalls angefragt.
PHP:
header('Expires: 0');
 
Du musst dafür sorgen, dass die gesendeten Daten dem Browser für das Caching missfällt. Das ist beispielsweise möglich, indem du einen Verfallszeitpunkt angibst. Wenn dieser in der Vergangenheit liegt, gelten die Daten als veraltet und werden bei der nächsten Anfrage ebenfalls angefragt.
PHP:
header('Expires: 0');

Ah scheint zu klappen :) Nun sind vorerst meine Fragen beantwortet.
 
Bei einen der ca. 5 Scripts erhalte ich jetzt eine PHP Warnung das der Header nicht geändert werden kann, was hat das zu bedeuten? Die Meldung kam erst nach den simplen einfügen von Expires und nun haben alle 3 Header-Zeilen diese Warnung. Könnte aber auch sein das die Meldung auch schon vor Expires gab, das Script wird nur ca 10 mal am Tag aufgerufen.
 
Wie bei allen Header-Manipulationen, müssen diese vor jeglicher Ausgabe gemacht werden. Denn der HTTP-Header wird vor den eigentlichen Nutzdaten gesendet und eine Veränderung ist dann selbstverständlich nicht mehr möglich.
 
Wie bei allen Header-Manipulationen, müssen diese vor jeglicher Ausgabe gemacht werden. Denn der HTTP-Header wird vor den eigentlichen Nutzdaten gesendet und eine Veränderung ist dann selbstverständlich nicht mehr möglich.

Also habe ich irgendwo vorher eine Ausgabe, ok werde das mal checken.

Edit: Ich hatte eine Leerzeile drin, jetzt ist die Meldung weg :)

Vielen Dank für deine Hilfe :)
 
Zuletzt bearbeitet:
Zurück