Archiv verlassen und diese Seite im Standarddesign anzeigen : Counter mit IP Sperre!
Hiho
ich habe einen counter gemacht das problem ist er sollte eine ip sperre haben bloß wie lese ich eine ip aus?
hier mal mein bisheriger counter:(denk ihr mysql wäre besser geeignet?)
<?
$datei = fopen("counter.txt","r+");
$counterstand = fgets($datei, 10);
if($counterstand == "")
{
$counterstand = 0;
}
$counterstand++;
echo $counterstand;
rewind($datei);
fwrite($datei, $counterstand);
fclose($datei);
?>
welcher thread aus der suche liegt deinem posting denn zugrunde?
Das ist der Orginal kopierte schattenbaum.net Counter.
Payne_of_Death 09-02-2005, 14:00 Würde mir mal überlegen eine weitere Textdatei anzulegen wo nur die IP-Adresse gespeichert wird........Und der Counter nur dann erhöht wird wenn die IP-Adresse noch nicht vorhanden ist
Die IP ist im PHP Environement:
$_SERVER['REMOTE_ADDR'];
Original geschrieben von Firefly
denk ihr mysql wäre besser geeignet?
ja
habe mal einen textbasierenden neuen geschrieben, aber irgentwie funzt er nicht -.-
(jo der oben ist von schattenbaum aber ich habe ihn ausm kop geschireben ^^ ich bitte das zu beachten!)
<?
$hitdatei = fopen ("counter/hit.txt","r");
$hitdatei1 = file("counter/hit.txt");
$hitsize = sizeof($hitdatei1);
$int = 0;
$hitdata = explode("|",$hitdatei1);
while($int < $hitsize or $int == $hitsize)
{
if($hitdata[$int] = $REMOTE_ADDR AND $hitdata[($int += 1)] > (time()-700))
{
$block = 1;
}
else
{
$block = 0;
}
$int += 1;
}
fclose($hitdatei);
$counterdatei = fopen("counter/counter.txt", "r");
$counterdata = file("counter/counter.txt");
fclose($counterdatei);
if($block = 0)
{
$counterdatei = fopen("counter/counter.txt", "w");
$counterdatei1 = file("counter/counter.txt");
$hitdatei = fopen ("counter/hit.txt","w");
$hitdatei1 = file("counter/hit.txt");
$counterdata ++;
$schreiben = fwrite($counterdatei, $counterdata);
$ipdings = $REMOTE_ADDR + "|" + time() + "|";
$schreiben1 = fwrite($hitdatei, $ipdings);
fclose($counterdatei);
fclose($hitdatei);
}
$counterdatei = fopen("counter/counter.txt", "r");
$counterdatei1 = file("counter/counter.txt");
echo 'Besucher insgesamt: <b>'.$counterdatei1[0].'</b>';
fclose($counterdatei);
?>
penizillin 10-02-2005, 19:35 was klappt denn nicht?
an welcher stelle versagt welcher teil?
er zählt keine neuen dazu
penizillin 10-02-2005, 19:59 dann würd ich an der stelle debuggen, wo er "dazuzählen" muss.
ghostgambler 10-02-2005, 22:05 Original geschrieben von Firefly
if($block = 0)
Was'n das für'n Witz?
Ich denke mal nicht, dass das ernst gemeint ist, oder? Du überprüfst, ob PHP die Variable wirklich setzen konnte? Schonmal passiert, dass du false bekommen hast?
Sarkasmus ist doch immer wieder was wolles :D
oben in der IF-Abfrage übrigens auch...
Original geschrieben von ghostgambler
if($block = 0)
[...] Schonmal passiert, dass du false bekommen hast?
natürlich, bei dieser zeile sogar jedes mal.
ghostgambler 10-02-2005, 22:41 Original geschrieben von wahsaga
natürlich, bei dieser zeile sogar jedes mal.
gibt das Ding den Wert der Variablen zurück?...mh, naja, wenn das mit fetch_assoc/etc in While funktioniert...naja, aber richtig ist es trotzdem nicht, egal was zurückgegeben wird *g*
Original geschrieben von ghostgambler
gibt das Ding den Wert der Variablen zurück?
natürlich.
eine als logischer ausdruck betrachtete zuweisung läuft immer auf den wert hinaus, der zugewiesen wurde.
ich habe den code überarbeitet aber er gibt aus "Besucher insgesamt: Array"
äre cool wen ihr die fehler vielleicht zitieren könntet mit ner nösung, dankö :)
<?
$hitdatei = fopen ("counter/hit.txt","r+");
$hitdatei1 = file("counter/hit.txt");
$hitsize = sizeof($hitdatei1);
$int = 0;
$hitdata = explode("|",$hitdatei1);
while($int < $hitsize or $int == $hitsize)
{
if($hitdata[$int] == $REMOTE_ADDR AND $hitdata[($int += 1)] > (time()-700))
{
$block = "1";
}
else
{
$block = "0";
}
$int += 1;
}
fclose($hitdatei);
$counterdatei = fopen("counter/counter.txt", "r+");
$counterdata = file("counter/counter.txt");
fclose($counterdatei);
if($block == "0")
{
$counterdatei = fopen("counter/counter.txt", "w");
$counterdatei1 = file("counter/counter.txt");
$hitdatei = fopen ("counter/hit.txt","w");
$hitdatei1 = file("counter/hit.txt");
$counterdata ++;
$schreiben = fwrite($counterdatei, $counterdata);
$ipdings = $REMOTE_ADDR + "|" + time() + "|";
$schreiben1 = fwrite($hitdatei, $ipdings);
fclose($counterdatei);
fclose($hitdatei);
}
$counterdatei = fopen("counter/counter.txt", "r+");
$counterstand = fgets($counterdatei, 20);
echo 'Besucher insgesamt: <b>'.$counterstand.'</b>';
fclose($counterdatei);
?>
penizillin 11-02-2005, 18:04 nur wenn du als zeichen von eigeninitiative anfängst zu debuggen und wenigstens annäherungsweise sagst, was an dem code nicht ok ist.
d.h. du versuchst den programmablauf schritt für schritt zu verfolgen und schaust immer wieder nach, ob alles so funktioniert, wie es erwartet wird.
wenn du in der lage bist, bedingungen wie diese zu entwickeln: $hitdata[($int += 1)] > (time()-700), wirst du auch debuggen können.
ich habe schon c++ visual basic.net programmiert und da debuggt daher isses für mich kein problm solche if-gleichungen aufzustellen, aber ich bin relativ neu in php(immer mal bischen)und weiß deshalb nicht was geht und was nicht geht!?
im übrigen denke ich das es kein problem ist so eine if abfrage zumachen, selbst für einen neuling wie mich da es genug hilfen im web gibt ;)
penizillin 12-02-2005, 12:32 c++ visual basic.net ist eine tolle sprache, aber schrittweise debuggen ist überall gleich.
du wirst doch herausfinden können, an welcher stelle sich die anwendung unadäquat verhält?
benutze testausgaben mittels echo oder die(). so kannst du jeden variablenwert im laufe des programmablaufs ausgeben lassen.
|
|