Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » PHP Counter Antworten
PHP Counter

cyber
Feiertags-Poster


Beiträge: 28


Hi, habe mir einen PHP counter mit Reload sperre gebastelt. Nur das Problem wenn z.b. vier leute mit verschiedenen IPs auf die Seite gehen zählt er trotzdem nur 1 statt 4.

Hier der Code:

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86: 
87: 
88:
<?php
######################config Bereich###############################################
//Geben sie hier den Zeitraum in Sekunden an die ein Rechner gesperrt ist
//momentan 1 h
           $sperr_zeit  = 60*60;
// Das was vor der Anzahl der Besucher stehen soll:
           $ansage = "Besucher seit dem 20.05.2001 : ";
// WICHTIG:Für Datei zahl.txt und iplogger.txt müssen auf alle schreibrechte besitzen (also chmod 666)

######################config Bereich ENDE#############################################
####################### Programm : ########################
echo $ansage;
kick_the_old_IPs();            // diese funktion sorgt dafür dass die Datei in der
                              //die IP gelogged wird die Ips gelöscht werden die dort
                              //schon länger vorhanden sind als in $sperr_Zeit erlaubt
    if (ip_suche($REMOTE_ADDR)){  //ip_suche überprüft ob ein Reload forlieg falls ja gibt
       $zahl = implode("",file("zahl.txt"));  // sie false zurück und der Seitenaufruf
       echo "<b>".++$zahl."<b>
";         //  wird nicht mitgezählt
       $dat = fopen("zahl.txt","wb");
       fwrite($dat,"$zahl");
       fclose($dat);
    }
    else {
       $zahl = implode("",file("zahl.txt"));
       echo "<b>".$zahl."<b>
";
    }
function ip_suche($vergleicher){
global $sperr_zeit;
  $array=file("iplogger.txt");// die Datensätze liegen in der form IP|Zeitpunkt vor und
                              // Je ein Datensatz pro Zeile
  if ($array[0] != ""){       // ist kein Datensatz vorhanden erübrigt sich das überprüfen....
    if(is_in($array,$vergleicher)){// überprüft ob die IP schon vorhanden ist ist...
        return 0;
    }
     else{                         // ist sie nicht vorhanden wird sie eingetragen
            $handle = fopen("iplogger.txt","a+b");
            $new = $vergleicher."|".time();
            fwrite($handle,"\r\n$new");
            fclose($handle);
            return 1;
        }
   }
  else {
      $handle = fopen("iplogger.txt","wb");
      $new = $vergleicher."|".time();
      fwrite($handle,"\r\n$new");
      fclose($handle);
      return 1;
  }
}
function is_in($array,$vergleicher){  // überprüft ob ein neues zählen erlaubt ist
foreach ($array as $check){          //  die einzelnen Datensätze werden duchgegangen
       $check=explode("|",$check);   // und aufgetrennt um sie zu prüfen.
       if ($check[0] == $vergleicher){ // ob eine Zeitüberschreitung vorliegt muss nicht
            return 1;                  // muss nicht überprüft werden da dies durch kick_the_old_IPs() erledigt wurde
            break;
       }
}
}
function kick_the_old_IPs(){  // überprüft ob die Datensätze noch benötigt werden.
                        // d.h. ob sie schon länger in der Datei stehen als die Sperrzeit besagt.
global $sperr_zeit;
  $array = file("iplogger.txt");
    foreach($array as $a){
       $b = explode("|",$a);
       $k = time()-$b[1];    // $k besagt wie lange der Datensatz shcon existiert
       if($k < $sperr_zeit){ // wenn die Sperrzeit noch nicht verstrichen ist
           $new_array[] =$a; // wird Der Datensatz in ein neues Array geschrieben
       }
    }
 if (count($new_array)>=2){      //umwandlung des neuen Arrays in einen String um probleme mit fwrite zu verhindern
     $string = implode("",$new_array);
 }
 elseif(count($new_array)==0){
     $string = "";
 }
 else{
     $string = $new_array[0];
 }
 $handle = fopen("iplogger.txt","wb");
 fwrite($handle,"$string");            //speichern des Aktuellen Datensatzes
 fclose($handle);
}

?> 


es sind noch 2files zum speichern. Name: iplogger.txt & zahl.txt

mfg

Diese Nachricht wurde geändert von: cyber
  Profil   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


Und unsereiner sucht und debuggt stunden- und tagelang. Nein, sorry, aber...

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

cyber
Feiertags-Poster


Beiträge: 28


was aber??????

  Profil   Editieren   Zitieren

inko
Fachidiot


Beiträge: 133


Du hast den gebastelt ?

http://wap.tutorials.de/t-13268.html

Es ist so hochinteressant, was die Leute für einen Stuss verzapfen.

  Profil   Editieren   Zitieren

cyber
Feiertags-Poster


Beiträge: 28


Ne nur übernommen und auf meine Bedürfnisse zugeschnitten °°°!!

hab aber ein weitgehendes Problem mit MEINEM Webserver anscheindent!

Denn wenn ich den Code (die dateien) bei tripod hochlade geht das alles einwandfrei.
Kann sogar mit MEINEN Scripten daten in txt files speichern.

Weiß vielleicht jemand warum ich das auc meinen Apache Server mit php Modul nit kann!!

  Profil   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


Stimmen die Zugriffsrechte des Ordners?

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

cyber
Feiertags-Poster


Beiträge: 28


Normal schon!

Was muss den da eingestellt werden??

WinXP mit Apache 1.3.26 + PHP Modul 4.2.2

Ich kenn mich nit mehr aus alle Scripte müssen hinhaun nur gehn die erst wenn ich die auf z.B.: Tripod lad

  Profil   Editieren   Zitieren
 

Antworten
Nach oben