ics - On the Fly
rodger rabitt
- php
Hallo,
ich möchte gerne mit ICS (Kalender und Termin) Datei anbieten. Dieses sollen quasi on the fly erstellt werden.
Soweit kein Problem einfach mit php Datei auf den Webspace schreiben und weiterleiten. Aber das passiert tausendfach (viele Termine). Und diese müssen entweder per Cronjob oder manuell im Anschluss wieder gelöscht werden.
Gibt es da keine schönere Variante?
Soetwas wie beispiel.php?start=32901040&end=10941234&titel=Timestamptest
Danke euer Rodger
Tach!
[On-the-Fly mit Datei]
Gibt es da keine schönere Variante?
Soetwas wie beispiel.php?start=32901040&end=10941234&titel=Timestamptest
Na klar. Parameter auswerten, Daten zusammensuchen und die Antwort direkt ausgeben, ohne den Umweg über eine Datei.
dedlfix.
Trick gefunden der Header ist entscheidend:
header("Content-Type: text/Calendar");
header("Content-Disposition: inline; filename=filename.ics");
Gibt es da keine schönere Variante?
Aber ja doch!
<?php
/*
erzeuge ICS-Daten als String $str
*/
# Erzeuge die richtigen Header für den Mime-Typ:
header('Content-Type text/ics; charset=UTF-8')
header('Content-Disposition: attachment; filename="kalender.ics"');
#Verhindere das Cachen im Browser und durch Proxis:
header( 'Expires: Thu, 01 Jan 1970 00:00:00 +0' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
# Gib die Daten aus:
print $str;
# Hör auf zu jammern :)
exit;
Soweit kein Problem einfach mit php Datei auf den Webspace schreiben und weiterleiten.
Diesen Unfug wirst Du vermeiden wollen.
Kleine Korrektur:
#falsch:
header('Content-Type text/ics; charset=UTF-8')
# richtig:
~~~php
header('Content-Type: text/calendar; charset=UTF-8');