Ankündigung

Einklappen
Keine Ankündigung bisher.

Dateien in einem Ordner automatisch löschen.

Einklappen

Neue Werbung 2019

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

  • Dateien in einem Ordner automatisch löschen.

    Hi, also ich hab ein Besucher Script, welches die IP in den Ordner IP speichert, für die IP Sperre des Counters.. Nun, würde ich gerne diesen Ordner z.B. alle 3 Tage 1x löschen lassen mit einem Script.. Kann mir jemand sagen wie ich das umsetzen kann?

    Code:
    <?php 
    //Liest die Ip aus!// 
    $ip = getenv ("REMOTE_ADDR"); 
    //Überprüfen ob $ip.ip schon erstellt ist// 
    if( file_exists("ip/$ip.ip")) 
    { 
        //Liest in den Array "lesaus" die datei user_gesamt.dat ein// 
        $lesaus =  file("user_gesamt.dat"); 
        //Gibt den Array "lesaus" aus// 
        echo"$lesaus[0]";   
    } 
        //Ab hier beginnt die Verneinung// 
    else 
    { 
        //Liest die datei user_gesamt.dat wieder in einen Array aus// 
        $lesaus =  file("user_gesamt.dat"); 
        //Der Ausgelsende Wert wird um 1 erhöt// 
        $lesaus[0]++;   
        //Die Datei user_gesamt.dat wird geöffnet// 
        $datei =  fopen("user_gesamt.dat","r+"); 
        //Der Variable $datenm wir der Ausgelsende ( und um 1erhöte) Wert zugeteilt// 
        $datenm="$lesaus[0]";   
        //Der Datenzeiger wird wieder an den Anfang zurückgesetzt// 
         rewind($datei); 
        //Der Wert der variable $datenm wird in die Datei geschrieben// 
         fwrite($datei,$datenm); 
        //Die Datei wird geschlossen// 
         fclose($datei); 
        //Der Wert der vorhin um 1 erhört wurden ist,wird ausgegeben// 
        echo"$lesaus[0]"; 
        //Die Datei $ip.ip wird im Modus 'w+' erstellt// 
        $file =  fopen("ip/$ip.ip","w+");   
        //Der Variable $datenm wird der wert $ip zugewiesen// 
        $datenm="$ip";   
        //In die Datei wird die Variable $ip geschrieben// 
         fwrite($file,$datenm); 
        //Die Datei wird geschlossen// 
         fclose($file); 
    } 
    ?>
    Danke

  • #2
    Mit unlink kannst du Dateien löschen. Jetzt musst du nur noch das Verzeichnis auslesen und alle Dateien löschen. Dazu findest du in der Forumssuche etwas.

    Oder du nimmst das erste Beispiel von hier:
    http://de.php.net/manual/de/function.rmdir.php

    mfG
    werbegeschenk
    [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

    Kommentar


    • #3
      Hm..
      Ja, aber wie lösche ich das jetz alles alle 3 Tage 1x ..?

      Kommentar


      • #4
        Zitat von bluestoke
        Hm..
        Ja, aber wie lösche ich das jetz alles alle 3 Tage 1x ..?
        Du könntest dir dafür einen Cronjob anlegen....

        Oder einfacher:
        Speichere nach jedem löschen in einer Datei den Timestamp. Jedesmal wenn die Seite aufgerufen wird kannst du ja jetzt den gespeicherten Timestamp mit dem aktuellen vergleichen und checken ob schon 3 Tage vergangen sind. Falls ja: Verzeichnis löschen und neuen Timestamp in die Datei schreiben. Falls nein: nichts machen.
        (Das würde zwar jetzt nicht haargenau alle 72h passieren, aber das macht ja nix)

        mfG
        werbegeschenk
        [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

        Kommentar


        • #5
          Hallo bluestoke,

          ich habe mir einmal Gedanken zu einem Ablauf zum Löschen in Zeitintervallen von 3 Tage gemacht:

          Du kannst mit einer select-Abfrage den aktuellen Timestamp abfragen (DB-Lösung) oder aber ohne DB (spätere Speicherung in session). Diesen aktuellen Timestamp speicherst Du in eine Session-Variable $x (oder aber DB-Lösung: Eintrag in DB-Tabelle). Beim nächsten Aufruf fragst Du ab, ob der noch gespeicherte Wert der Session-Variable $x oder aber der Eintrag in der DB (mit select-abfrage) <3 Tage des aktuellen Timestamps ist. Ist dies der Fall, so tritt hier Deine Löschfunktion in Kraft. Sollte dies nicht der Fall sein, so wird nichts gelöscht.

          Tage können von einem Datum, das in einer DB-Tabelle steht auf folgende Art und Weise abgezogen werden:
          Code:
          SELECT DATE_SUB("1998-01-02", INTERVAL 3 DAY);
          ... oder hinzuaddiert werden:
          Code:
          SELECT DATE_ADD("1997-12-31 23:59:59",
                                 INTERVAL 3 DAY);
          Für "1998-01-02" kann auch eine Variable eingesetzt werden.
          http://dev.mysql.com/doc/mysql/de/Da...functions.html
          http://de.php.net/session

          Da es ja viele, viele Besucher geben kann, würde ich aus Performancegründen zu der DB-Lösung tendieren.

          greetz,

          kamalo

          Kommentar


          • #6
            Zitat von Werbegeschenk
            Du könntest dir dafür einen Cronjob anlegen....
            Hallo Werbegeschenk,
            hallo bluestoke,
            o.k., an Cronjob habe ich nicht gedacht. Aber das wäre ja eine Ergänzung wert? Es könnte zusätzlich ein automatisches Aufrufen des Scripts über Cronjob erfolgen... damit in regelmässigen Abständen gelöscht werden kann, oder aber durch Erstellen eines Scriptes.

            Kamalo

            Kommentar


            • #7
              Was ist denn ein CronJob und wie lege ich so einen an?
              In html kenn ich mich ja sehr gut aus, aber insachen php habe ich erst angefangen.

              Aber das mit dem löschen brauch ich jetz eigentlich nicht mehr.
              Ich speichere alle ips von meinen besuchern in einer ip.dat
              da steht: &&"ID"&&"IP"
              &&"ID"&&"IP"
              und sobald 200 Einträge da sind, überschriebt es einfach die ersten wieder, so fällt das löschen weg

              Aber in Sachen Datum und Zeit habe ich Probleme.
              Ich versuche die Besucher Heute und Gestern zu ermitteln,
              doch ich weiss einfach nicht wie ich das anstellen soll.
              Hat einer von euch ein Beispiel ?

              Grüsse

              Kommentar


              • #8
                Hallo,

                ein Cronjob ist, - hoffentlich erklär ich das jetzt richtig - ich beschreibe mal einfach, was ich dazu denke: ein automatisierter Vorgang (beispielsweise zum Überprüfen von Aktionen des Servers), hervorgerufen durch ein automatisches Aufrufen (serverseitig) eines Scriptes. Ein konkretes Beispiel kann ich Dir jetzt nicht dafür geben. Eine Beschreibung zum Fall eines Serverausfalls findest Du hier. Dort gibt es auch ein Beispiel: -na ja, für den Fall eines Serverausfalls, wie gesagt:
                http://www.tutorials.de/tutorials157669.html

                ... für eine Prüfung des Datums könnte folgendes Erfolg haben:
                Code:
                $dname ='datum.php'; 
                // ermittelt Datum der Datei datum.php ab addiert 3600 hinzu
                $ddatei= filemtime($dname); 
                $dheute=time(); 
                $ddatei = $ddatei + 3600; 
                // ermitteltes Datum + 3600 kleiner aktuelles Datum?
                if ($ddatei < $dheute) 
                { 
                include('cron.php');
                // dann includiere cron.php (Ausführdatei) 
                touch($dname); 
                }
                Gruß,

                kamalo

                Kommentar


                • #9
                  PHP selber wird ja nur ausgeführt wenn mans aufruft.
                  Ein Cronjob wird der von alleine immer kontinuierlich ausgeführt?

                  Kommentar


                  • #10
                    Hallo,

                    PHP selber wird ja nur ausgeführt wenn mans aufruft.
                    Das ist richtig, es gibt noch zusätzlich eine Möglichkeit, daß der Server in bestimmten Zeitabständen ein Script aufruft, das dann gewünschte Aktionen (regelmässig und dadurch automatisiert) durchführt. Dieses Verfahren wird Cronjob genannt (auf jeden Fall im Unix/Linux Netzwerkbereich). Der Cronjob wird vom Server angestoßen.
                    - Sehe ich das falsch, so verbessert mich bitte. Es müßte hier jede Menge Fachliteratur geben. Beispielsweise behandelt dieses Forum auch Linux-Server-Themen.
                    Außerdem ist in dem von mir genannten Link beschrieben:
                    Voraussetzung für den Einsatz: Hosting-Angebot mit PHP4 und Möglichkeit, Cron Jobs zu starten. =>Da müßtest Du Dich bei Deinem Webhoster informieren...

                    Soviel von meiner Seite zu Cronjobs.

                    Der Wert, auf den ich mich weiter oben im Beispiel beziehe:
                    Code:
                    $ddatei = $ddatei + 3600;
                    Dazu habe ich versäumt zu erwähnen daß der Zeitstempel in Sekunden gemessen wird, 3600/60=60Minuten. 60Minuten=1Stunde, 3 Tage=72 Stunden. 72x3600=259200Sekunden. Diese Sekundenzahl sollte im Beispiel genutzt werden, um den Datumswert von 3 Tagen zu vergleichen...

                    Der Zeitstempel wird mit sicherlich gut in vielen Handbüchern beschrieben...
                    http://www.webmaster-resource.de/tut...utorial_17.php
                    time:
                    Die Funktion time gibt den aktuellen Unix-Zeitstempel (Unix-Timestamp) zurück. Dieser gibt die seit Beginn der UNIX-Epoche (01.01.1970 00:00:00 GMT) bis jetzt vergangenen Sekunden zurück.
                    Gruß,

                    kamalo

                    Kommentar


                    • #11
                      Vielen Dank.

                      Kommentar


                      • #12

                        Kommentar

                        Lädt...
                        X