datumsbegrenzte Ausgabe einer Datei

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • datumsbegrenzte Ausgabe einer Datei

    Hi

    ich möchte gern eine Datei abrufbar machen nur innerhalb eines bestimmten Zeitraumes, danach sollte angezeigt werden: nicht mehr möglich oder so.

    Hat da jemand was für mich?

  • #2
    Also ich würds so machen:

    - Die Dateien, um die es geht, in einem geschützten Verzeichnis unterbringen (durch .htaccess-Passwortabfrage geschützt oder ausserhalb des Webroots wenn möglich), um sie vor direktem Zugriff zu schützen

    - im geschützten Verzeichnis eine Liste "zeitfenster.txt" mit Dateinamen, Start- und Endzeit erstellen:

    song.mp3;2002-05-04;2002-05-31
    song2.mp3;2002-05-03;2002-06-01
    programm.exe;2002-05-01;2002-06-25

    - ein PHP-Skript "download.php" erstellen:

    <?

    // Aufgerufen wird das Skript nach dem Muster:
    // download.php?datei=dateiname.xyz

    $geschuetztesVerzeichnis = "downloads";

    // Zeitfenster-Datei auslesen

    $zeitfenster = file("$geschuetztesVerzeichnis/zeitfenster.txt");

    // Nach betreffendem Dateinamen in der Liste suchen

    $gefunden = null;

    foreach ($zeitfenster as $zeile)
    {

    $temp = explode(";",$zeile); // Zeile aufsplitten; Semikolon ist Trennzeichen

    if ($temp[0] == $datei) // Gesuchter Eintrag gefunden
    {

    $gefunden = true;

    // Start- und Endzeit in Array aus Jahr, Monat, Tag aufschneiden
    $startzeit = explode("-",$temp[1]);
    $endzeit = explode ("-",$temp[2]);

    // Start- und Endzeit in Timestamp umwandeln

    $startzeit_timestamp = mktime (0,0,0,$startzeit[1],$startzeit[2],$startzeit[0]);

    $endzeit_timestamp = mktime (0,0,0,$endzeit[1],$endzeit[2],$endzeit[0]);

    $heute_timestamp = time();


    // Zeiten vergleichen

    if (($startzeit_timestamp < $heute_timestamp) && ($endzeit_timestamp > $heute_timestamp))
    { // Datei ausgeben
    $file = fopen("$geschuetztesVerzeichnis/$datei","r");
    fpassthru($file);

    } // end if
    else die ("Zeitlimit überschritten!");



    } // end if

    } // end foreach

    if (!$gefunden)
    die ("kein Zeitfenster für diese Datei gefunden.");

    ?>

    Nicht getestet, bei Problemen einfach melden!
    Zuletzt geändert von pekka; 19.05.2002, 15:48.

    Kommentar


    • #3
      eh das ist ja klasse... ich werds ausprobieren und mich dann nochmal melden...

      aber noch was... kann ich da auch noch ne Uhrzeit hintendran hängen?

      Kommentar


      • #4
        Schon, Du musst halt die Datumszeile anders parsen.
        Wenn Du es nach folgendem Muster machst:

        2002-05-02-13-55-00
        = 5.2.2002 13:55 und 0 Sekunden

        (Auf diese Art bleibt die Codeänderung klein :-)

        Musst Du bei den mktime-Aufrufen nur die 0,0,0 durch
        $startzeit[3],$startzeit[4],$startzeit[5]
        und äquivalent $endzeit[3]... usw.
        ersetzen.

        Kommentar


        • #5
          coole Sache..es klappt!!

          DANKE

          Kommentar


          • #6
            gibt es da nicht auch die möglichkeit einen php befehl gleich in die aufzurufende Seite zu schreiben?

            nach dem Motto: $serverdate = date
            if date kleiner als usw. echo "vorbei"

            ???

            Kommentar


            • #7
              das müsste doch so irgendwie gehen

              if ($datum<$zeitpunkt)
              include("ok.htm");
              else
              include("vorbei.htm");

              kann mir jemand den genauen code geben?

              wäre echt nett... ich komme nämlich mit diesen datums funktionen nicht so klar!

              DANKE

              PS: bräuchte Datum + Uhrzeit

              Kommentar


              • #8
                bitte...

                Kommentar


                • #9
                  Hallo,

                  probiers mal damit:

                  $datum = strftime("%d.%m.%Y:%H:%M:%S",time());
                  $darf = "28.05.2002:11:00:00";
                  echo $datum."<br>";
                  if ($datum < $darf)
                  include("ok.htm");
                  else
                  include("vorbei.htm");

                  is zwar nicht die schönste lösung, aber bei mir gehts.

                  Gruss
                  Sascha

                  Kommentar


                  • #10
                    bei mir klappt es auch...

                    Hauptsache es erfüllt den Zweck!

                    Danke

                    Kommentar


                    • #11
                      komischerweise funzt es jetz nicht mehr bei mir...

                      da scheint es irgendwie Probleme mit den Monaten zu geben...

                      Kommentar

                      Lädt...
                      X