rodger rabitt: ics - On the Fly

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

http://collider.com/wp-content/uploads/who-framed-roger-rabbit.jpg

  1. 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.

    1. Trick gefunden der Header ist entscheidend:

      header("Content-Type: text/Calendar");  
      header("Content-Disposition: inline; filename=filename.ics");
      
  2. 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.

    Jörg Reinholz

    1. Kleine Korrektur:
      #falsch:

      header('Content-Type text/ics; charset=UTF-8')

      # richtig:  
      ~~~php
      header('Content-Type: text/calendar; charset=UTF-8');  
      
      

      Jörg Reinholz