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: |
".++$zahl."
"; // wird nicht mitgezählt
$dat = fopen("zahl.txt","wb");
fwrite($dat,"$zahl");
fclose($dat);
}
else {
$zahl = implode("",file("zahl.txt"));
echo "".$zahl."
";
}
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