PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Besucherzähler


The One
24.06.2006, 19:11:51
Hi,

ich möchte einen Besucherzähler erstellen welcher eine _gute_ Ip-Sperre hat. Wie gehe ich sowas an? Habe zwar gute PHP Kenntnisse aber dafür habe ich keinen durchblick.

Habe mir schonmal einen geproggt doch dieser hat für jeden besucher eine neue Zeile in der Datenbank angelegt, womit die Datenbank nach einiger Zeit ziemlich groß wurde... Und die Ip-Sperre hat auch nie richtig funktzioniert.


Es würden mir einfache Ideen dazu reichen, also Scripts posten ist nicht nötig. Genauso möchte ich keine Links zu Tutorials oder fertige Scripts haben. Ich möchte meine Homepage 100% selber gecodet haben, jedoch für Tipps bin ich immer offen.


schonmal danke im vorraus
mfg The One

Demonking
24.06.2006, 20:46:58
öhm.. oO
nen counter ist folgend ausgebaut

1.seite lade
2.zähler erhöhen
3.dabei die ip in die db speichern
4.immer abfragen ob ip in der db ist wenn nicht dazu zählen und in die db speichern
5.noch ne if prüfung ob ne ip 24h oder so alt ist und löschen oO

zu einer ip sperre :/ sowas was 100%ig sicher ist gibt es NIE.
Da man sich nur neu ins internet einloggen muss und dann hat man schon ne neue ip und der zähler geht wieder um 1 hoch ;)
Cookies isnd auch net prikelnd sind die deaktiviert oder löscht man die manuell wird man wieder dazugezählt ^^

The One
24.06.2006, 23:17:37
öhm.. oO
nen counter ist folgend ausgebaut

1.seite lade
2.zähler erhöhen
3.dabei die ip in die db speichern
4.immer abfragen ob ip in der db ist wenn nicht dazu zählen und in die db speichern
5.noch ne if prüfung ob ne ip 24h oder so alt ist und löschen oO

zu einer ip sperre :/ sowas was 100%ig sicher ist gibt es NIE.
Da man sich nur neu ins internet einloggen muss und dann hat man schon ne neue ip und der zähler geht wieder um 1 hoch ;)
Cookies isnd auch net prikelnd sind die deaktiviert oder löscht man die manuell wird man wieder dazugezählt ^^


erstmal riesen dankeschön für die antwort und hilfe. doch eine frage habe ich noch. sollte ich für die ip und den counter selber eine oder zwei datenbanken benutzen?

Demonking
24.06.2006, 23:54:23
dafür sollte 1 tabelle reichen wo du ip+zeit speicherst ;)
Aber wie gesagt 100%igen sperre gibt es net :D

Kaldoran
25.06.2006, 14:42:15
Das mit dem Counter klingt gut. Ich glaube ich programmier mir auch einen.

Ich würde eigentlich auch alles hin bekommen außer die folgenden dinge:

1. Wie kann man die aktuelle Zeit in PHP auslesen

2. Wie mache ich das genau mit der abfrage ob die IP älter als 24 h ist


Noch was: Nur mal von dem Fall angenommen das bereits 3000 IP Adressen durch den Counter gespeichert sind. Also es kommen 3000 Leute am Tag auf die Seite ^^. Ist das nicht sehr datenbank server lastig wenn der jedes mal 3000 einträge durch geht um zu überprüfen ob die IP schon vorhanden ist. Oder verkraften die heutigen Server das locker ?

The One
25.06.2006, 16:59:51
die aktuelle zeit mit der funktzion time() und ob die ip älter als 24 h ist so:

du hast in der datenbank die ip und den dazugehörigen timestamp stehen. dann mit einer if schleife so abfragen

$time_aktuell = time();
$time_24 = $time_aktuell - 86400;
if($time_aktuell < $time_24) {
//eintrag ist älter als 24 h
}



ich habe noch ein problem mit meinem counter und zwar folgendes. ich möchte den zähler immer 5 stellig ausgeben also wenn ich 30 besucher habe soll es so aussehen 00030. wie stelle ich es an das er mir die entsprechenden nullen davor setzt?

Kaldoran
25.06.2006, 17:25:50
ich glaube auf das Nullen problem hab ich sogar eine kleine lösung

Ich fang ma an zu programmieren wenns funzt sag ich bescheid

The One
25.06.2006, 17:44:20
danke, aber habe bereits eine lösung gefunden, scheint mir zwar nicht sehr elegant aber trotzdem wirkungsvoll :)

$zeichen = strlen($besucher);
if($zeichen == 4){
$besucher = "0$besucher";
}
elseif($zeichen == 3){
$besucher = "00$besucher";
}
elseif($zeichen == 2){
$besucher = "000$besucher";
}
elseif($zeichen == 1){
$besucher = "0000$besucher";
}


und noch dazu wird bei mir der counter grafisch angezeigt :P

Opendix
25.06.2006, 18:56:59
$besucher = str_pad($besucher, 5, '0', STR_PAD_LEFT);

müsste auch gehen ;)

http://ch2.php.net/str_pad

Kaldoran
25.06.2006, 19:35:10
Naja jetzt will ich meine lösung auch noch zeigen ^^

if ($counter < 10)
{
echo "00000$counter";
}

if ($counter < 100)
{
echo "0000$counter";
}

if ($counter < 1000)
{
echo "000$counter";
}

Das ist zwar recht simpel aber es funktioniert auch so

Opendix
25.06.2006, 23:19:54
jo aber 13 vs. 1 zeile ist schon bisschen umständlich ;)