000
19.03.2002, 17:42
Megge
|
sollt ein counter mit ip sperre geben. counter geht schon prima, nur die ip sperre macht noch mucken.
[b]der counter ohne ip sperre[/b] <?php if (file_exists("counter.php")) [color="#ff0000"]// sind schon seitenzugriffe gezählt worden ?[/color] { include("counter.php"); [color="#ff0000"]// wenn ja, includen[/color] } else { $ppls_count = 0; [color="#ff0000"]// wenn nein, ne variable erstellen, die den counter auf 0 setzt[/color] } $nwcntr = $ppls_count + 1; [color="#ff0000"]// counter um eins erhöhen[/color] $nwstg = '<? $ppls_count = ' . $nwcntr . '; ?>'; [color="#ff0000"]// counter.php vorbereiten (wird dann später im code geschrieben)[/color] $updcnt = fopen("counter.php", "w"); if( !$updcnt ) [color="#ff0000"]// kein zugriff möglich ?[/color] { print "<b>Can't update counter !</b><br><br>is 'counter.txt' write protected ?"; [color="#ff0000"]// wenn ja, error message[/color] } else { fwrite($updcnt, $nwstg); [color="#ff0000"]// wenn nein, datei neuschreiben mit aktualisiertem counter[/color] } print $nwcntr . " Besucher<br>seit 19.03.2002"; [color="#ff0000"]// counter mit aktualisiertem counter ausgeben.[/color] ?>
dann hab ich ein bissel rumgewerkelt..
[b]counter mit ip sperre[/b] <?php if (file_exists("counter.php")) { include("counter.php"); } else { $ppls_count = 0; } $nwcntr = $ppls_count + 1; $nwstg = '<? $ppls_count = ' . $nwcntr . '; ?>'; $updcnt = fopen("counter.php", "w"); if( !$updcnt ) { print "<b>Can't update counter !</b><br><br>is 'counter.txt' write protected ?"; } else { [color="#ff0000"]// alles gleich bis hierher..[/color] if (!file_exists ("blocked/" . $REMOTE_ADDR . ".php")) [color="#ff0000"]// existiert eine datei mit deiner ip als name ?[/color] { fwrite($updcnt, $nwstg); [color="#ff0000"]// wenn nein, wird die counter-datei geschrieben (um 1 erhöht)[/color] fclose($updcnt); [color="#ff0000"]// und wieder geschlossen[/color] $blip = fopen ("blocked/" . $REMOTE_ADDR . ".php", "w+"); [color="#ff0000"]// eine datei wird erstellt[/color] $blct = $REMOTE_ADDR; [color="#ff0000"]// und ein (nicht genutzer) inhalt reingeschrieben[/color] fwrite($blip, $blct); [color="#ff0000"]// und eine ip-datei egschrieben[/color] fclose($blip); [color="#ff0000"]// und wieder geschlossen[/color] } else { print "deine ip existiert schon, counter wird nicht erhöht"; [color="#ff0000"]// selbsterklärend, wird noch rausgenommen..[/color] } } print $nwcntr . " Besucher<br>seit 19.03.2002"; ?>
problem #1 diese ip datei wird nicht geschrieben, wenn sie noch nicht vorhanden ist, obwohl sie das doch tun sollte mit w oder w+ problem #2 wenn ich diese ip datei manuell mache, so überschreibt er die counter.php mit einer leeren datei und in der [ip].php ist auch nix. in der fertigen datei steht dann nur noch "deine ip existiert schon, counter wird nicht erhöht1 Besucher seit 19.03.2002"
ich komm einfach ned drauf, was hier falsch ist...
--
Dieser Beitrag wurde am 19.03.2002 um 17:46 von Megge bearbeitet.
|
|
Profil || Suche
|
001
20.03.2002, 21:06
Megge
|
irgendso ein freaky muss es doch geben, der hier was falsches drin findet. habs extra noch detailliert kommentiert, damit die einarbeit in den kleinen code leicht fällt..
--
|
|
Profil || Suche
|
002
20.03.2002, 21:24
dp
Administrator
|
hat der webserver denn schreibrechte auf blocked/ als verzeichnis ?
--
|
|
Profil || Suche
|
003
20.03.2002, 21:54
Megge
|
ich habs auf meinem lokalrechner getestet. dort is nix schreibgeschützt. desweitern könnte ich ja bereits erfolgreich mit dem simpleren script schreiben
--
|
|
Profil || Suche
|
004
20.03.2002, 22:00
dp
Administrator
|
hm je nach php config könnten GLOBALS off sein, das würden heißen du müsstest erst die variable $REMOTE_ADDR mit getenv() holen:
$ip = getenv('REMOTE_ADDR');
--
|
|
Profil || Suche
|
005
20.03.2002, 22:55
Megge
|
ne, die ip kann ich schon auslesen, das ist kein problem...
--
|
|
Profil || Suche
|
006
21.03.2002, 15:04
apfelkorn
|
mh, es könnte sein, das der dateiname nicht für voll geht... probiermal das ganze als eine liste ein eine einzelne textdatei zu schreiben. du liest das ganze als array an und jenachdem was kommt kannst du dann mimt if(is_in_array(odersoaehnlich[]) prüfen obs schon drin ist...
--
|
|
Profil || Suche
|