Ankündigung

Einklappen
Keine Ankündigung bisher.

ip bei counter nach 24 stunden löschen?

Einklappen

Neue Werbung 2019

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

  • ip bei counter nach 24 stunden löschen?

    Hallo Gemeinde.

    Ich probiere mich gerade an meinem ersten Zähler für allgemeine Seiten Besuche.

    Hier das bisherige Script!

    PHP-Code:
    <?php
    //ermitteln ob eine ip in Tabelle steht die grad die seite wieder besucht!
    $sqlbefehl ="
       Select
        ip
       From
        counter
       "
    ;
    $erg_ip mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
    $ip_wert mysql_fetch_assoc($erg_ip);
    $ip $_SERVER['REMOTE_ADDR']; //IP Adresse holen
    $time time(); //Datum und Zeit eintragen
    //wenn IP Adresse noch nicht vorhanden einen Eintrag in DB machen
    if($ip_wert['ip'] != $ip)
    {
     if(
    get_magic_quotes_gpc())
     {
      
    $ip stripslashes($ip);
      
    $time stripslashes($time);
     }
     
    $sqlbefehl ="
        Insert Into counter
          (
           ip,
           datum
          )
        VALUES
          (
           '"
    .mysql_real_escape_string($ip)."',
           '"
    .mysql_real_escape_string($time)."'
          )
        "
    ;
     
    $result mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
    }
    //IP nach 24 Stunden löschen Datensatz bleibt aber bestehen zum zählen!
    $ip_dell ="";
     if(
    get_magic_quotes_gpc())
     {
      
    $ip_dell stripslashes($ip_dell);
     }
    $sqlbefehl ="
       Update
        counter
       Set
        ip='"
    .mysql_real_escape_string($ip_dell)."'
       Where
        datum<'
    $update_time'
       "
    ;
    $res_ip mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
    //Counterstand ausgeben
    echo '<table cellpadding="0" cellspacing="0" width="150" boder="1">';
    echo 
    '<tr>';
    echo 
    '<td>';
     
    $sqlbefehl ="
        Select
         id_count
        From
         counter
        Order By
         id_count desc
        Limit
         1
        "
    ;
     
    $erg_id mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
     
    $wert mysql_fetch_array($erg_id);
    echo 
    'Gesamt: '.$wert['id_count'].'';
    echo 
    '</td>';
    echo 
    '</tr>';
    echo 
    '</table>';
    ?>
    Mein Problem ist jetzt wie kann ich es machen das nach dem Ablauf von 24 Stunden die jeweiligen IP's gelöscht werden. Wenn eine IP drin ist die die Seite grad wieder Besucht wird auch kein neuer Eintrag gemacht!

    Das Datumsfeld habe ich in int(10) angelegt und trage es wie zu sehen mit der time() funktion ein!

    Es würde schon reichen wenn man mir eine funktion dafür geben könnte!

    Danke für eure Hilfe mfg der litter!

  • #2
    Es müsste einfach ungefähr so aussehen:
    PHP-Code:
    mysql_query("DELETE FROM ip_table WHERE datum<".(time()-3600)) or die(mysql_error()); 
    *ungetestet und nicht auf dein Beispiel zugeschnitten*

    Kommentar


    • #3
      Nunja löschen will ich den Datensatz ja nicht. Weil wenn mal drei Tage keiner auf die Seite geht dann wären alle Datensätze weg und es würde ja kein Zählerstand mehr ausgegeben!

      Kommentar


      • #4
        Seltsames script ...

        Warum verwendest du so oft stripslashes und mysql_real_escape_string wo es gar nicht nötig ist?

        PHP-Code:
        $ip_dell ="";
         if(
        get_magic_quotes_gpc())
         {
          
        $ip_dell stripslashes($ip_dell);
         }
        $sqlbefehl ="
           Update
            counter
           Set
            ip='"
        .mysql_real_escape_string($ip_dell)."'
           Where
            datum<'
        $update_time'
           "

        müsste doch auch so aussehen:

        PHP-Code:
        $update_time time()-24*3600;
        $sqlbefehl ="
           Update
            counter
           Set
            ip=''
           Where
            ip != '' 
           And
            datum<"
        .$update_time."
           "

        Kommentar


        • #5
          Wenn du gucken willst, ob die IP in der letzten Stunde auf deiner Seite warm dann halt mit SELECT abfragen

          PHP-Code:
          $result=mysql_query("SELECT * FROM ip_table WHERE datum<".(time()-3600)) or die(mysql_error());  
          if (!
          mysql_num_rows($result)){
             
          // kein Besuch

          Kommentar


          • #6
            Einen Datensatz eines Counters über 3 Tage zu speichern bringt relativ wenig.
            Die Datensätze enthalten natürlich immer die externe IP, und diese wird (normalerweise) nach 24 Stunden geändert, da dort der Router neugestartet wird und dem Benutzer somit eine neue externe IP zugewiesen wird.

            Meine Meinung nach ist es Quatsch auf einen Datensatz bei einem Counter zu bestehen.
            Normale Statistiken sind immer mit einem 24-H-Counter ausgestattet, warum brauchst du einen anderen?

            ////[]\\\\\
            Edit:
            lol, total missverstanden, sorry..
            Du solltest aber nicht nach Datensätzen aussortieren, sondern ein anderes Feld anlegen und ein Script schreiben, dass nur dieses Feld (den Counter) hochzählt, sofern die IP nicht schon vorhanden ist.
            Du brauchst also 2 Tabellen, eine für den Counter/für die Hits und eine für die IP's und date's!
            \\\\[]/////

            Kommentar


            • #7
              versuch es doch einfach anders anzugehen.
              Wenn es darum geht um einen Besuchercounter zu machen, setz einfach einen Cookie wenn er auf die Page geht, der genau am nächsten tag um 0:00 stirb ist, so habe ich das mal gemacht finde nur den code leider nicht mehr.

              mfg homekiller

              Kommentar

              Lädt...
              X