PHP Counter

Hallo Leute,

anbei der Quellcode von einem Counter. Natürlich gehören da noch ein paar weitere Dateien dazu, aber generell funktioniert das so.

Nun meine Frage; was bedeutet die Zeile 5 mit der „jetztzeit“ ??? Ist das eine Reload Sperre ? Falls ja, wie kann ich die Zeit verändern, ist mir nicht gelungen.

Ich möchte es so haben; Reload ca. 1 Stunde, auf IP Adressen soll weiterhin geprüft werden, aber wenn jemand mit der gleichen IP nach über eine Stunde wieder draufgeht, soll der Zähler auch zählen.

Danke.

Jürgen

PS: die javaurl ist natürlich nur als Beispiel im Quelltext…

$javaurl = „http://www.meine_seite_im_netz.de/counter/open.js“;

$jetztip=getenv(„REMOTE_ADDR“);
$jetztzeit=time()-60;
$i=0;
$a=0;

----------------------------- Ip vorhanden? -----------------------------

$datei=fopen(„ip.dat“,„r“);
while(feof($datei)==0):
$ip=chop(fgets($datei,50));
$zeit=chop(fgets($datei,50));

if ($ip=="" && $zeit=="")
continue;

if ($ip==$jetztip)
$i=1;
if ($zeit>=$jetztzeit):
$insgesamt.=$ip."\n".$zeit."\n";
else:
if ($ip==$jetztip)
$insgesamt.=$jetztip."\n".time()."\n";
endif;

$a++;
endwhile;

if ($i==0 || $a==0):
$insgesamt.=$jetztip."\n".time()."\n";
$i=2;
endif;

fclose($datei);

----------------------------- Speichern -----------------------------

$datei=fopen(„ip.dat“,„w“);
fputs($datei,$insgesamt);
fclose($datei);

----------------------------- Counter laden -----------------------------

$z=0;
$datei=fopen(„count.dat“,„r“);
while(feof($datei)==0):
$zaehler[$z]=chop(fgets($datei,50));
$z++;
endwhile;
fclose($datei);

----------------------------- Wochentage -----------------------------

if($i==2):
if($zaehler[0]!=date(„l“)):
$zaehler[0]=date(„l“);
if($zaehler[0]==„Monday“)
$zaehler[1]=0;
if($zaehler[0]==„Tuesday“)
$zaehler[2]=0;
if($zaehler[0]==„Wednesday“)
$zaehler[3]=0;
if($zaehler[0]==„Thursday“)
$zaehler[4]=0;
if($zaehler[0]==„Friday“)
$zaehler[5]=0;
if($zaehler[0]==„Saturday“)
$zaehler[6]=0;
if($zaehler[0]==„Sunday“)
$zaehler[7]=0;
endif;

if($zaehler[0]==„Monday“)
$zaehler[1]++;
if($zaehler[0]==„Tuesday“)
$zaehler[2]++;
if($zaehler[0]==„Wednesday“)
$zaehler[3]++;
if($zaehler[0]==„Thursday“)
$zaehler[4]++;
if($zaehler[0]==„Friday“)
$zaehler[5]++;
if($zaehler[0]==„Saturday“)
$zaehler[6]++;
if($zaehler[0]==„Sunday“)
$zaehler[7]++;
$zaehler[9]++;
for($z=1; $z=$zaehler[8])
$zaehler[8]=$zaehler[$z];

for($z=0; $z

echo „document.write(“");"; ?>
echo „document.write(„Gesamt: „);“; ?>
echo „document.write(“[“);“; ?>
echo „document.write($zaehler[9]);“; ?>
echo „document.write(“](javascript:fenster())");"; ?>

echo „document.write(“
„);“; ?>
echo „document.write(„Heute: „);“; ?>
echo „document.write(“[“);“; ?>
echo „document.write($tag);“; ?>
echo „document.write(“](javascript:fenster())");"; ?>

Hallo Leute,

anbei der Quellcode von einem Counter. Natürlich gehören da
noch ein paar weitere Dateien dazu, aber generell funktioniert
das so.

Nun meine Frage; was bedeutet die Zeile 5 mit der „jetztzeit“
??? Ist das eine Reload Sperre ? Falls ja, wie kann ich die
Zeit verändern, ist mir nicht gelungen.

Ja, ist eine Reloadsperre. Der Code dazu steht unter „IP vorhanden“ direkt drunter und ist nicht ganz richtig, weswegen deine Änderung keine Auswirkung hat, wenn deine IP einmal im File steht.

$jetztzeit=time()-60;

http://php.net/time

Die 60 gibt eine Minute, time() sind Sekunden…

$i=0;
$a=0;

----------------------------- Ip vorhanden?


$datei=fopen(„ip.dat“,„r“);
while(feof($datei)==0):
$ip=chop(fgets($datei,50));
$zeit=chop(fgets($datei,50));

if ($ip=="" && $zeit=="")
continue;

if ($ip==$jetztip)
$i=1;
if ($zeit>=$jetztzeit):
$insgesamt.=$ip."\n".$zeit."\n";
else:
if ($ip==$jetztip)

In dem Fall ist die IP zwar im File, aber mit zu altem Datum, d.h. es muss trotzdem gezählt werden.
$i=2 und oben : / endif ergänzen

$insgesamt.=$jetztip."\n".time()."\n";
endif;

$a++;
endwhile;

if ($i==0 || $a==0):
$insgesamt.=$jetztip."\n".time()."\n";
$i=2;
endif;

fclose($datei);

----------------------------- Speichern


$datei=fopen(„ip.dat“,„w“);
fputs($datei,$insgesamt);
fclose($datei);

----------------------------- Counter laden


$z=0;
$datei=fopen(„count.dat“,„r“);
while(feof($datei)==0):
$zaehler[$z]=chop(fgets($datei,50));
$z++;
endwhile;
fclose($datei);

----------------------------- Wochentage


if($i==2):

if($zaehler[0]!=date(„l“)):
$zaehler[0]=date(„l“);

Das wäre date(„w“) aber wesentlich kürzer zu schreiben, weil sich dann die ganze Vergleicherei unten auf $zaehler[($zaehler[0]+1)%7+1]=0 reduzieren lässt.
date(„w“) gibt 0 für Sonntag, 1 für Montag, etc… Das Ganze +1 und modulo 7 gibt 0 für Montag, 1 für Dienstag…6 für Sonntag, die +1 macht dann 1…7 draus.

if($zaehler[0]==„Monday“)
$zaehler[1]=0;
if($zaehler[0]==„Tuesday“)
$zaehler[2]=0;
if($zaehler[0]==„Wednesday“)
$zaehler[3]=0;
if($zaehler[0]==„Thursday“)
$zaehler[4]=0;
if($zaehler[0]==„Friday“)
$zaehler[5]=0;
if($zaehler[0]==„Saturday“)
$zaehler[6]=0;
if($zaehler[0]==„Sunday“)
$zaehler[7]=0;
endif;

Das unten lässt sich analog zu dem oben dann kürzen…
$zaehler[($zaehler[0]+1)%7+1]++ analog, siehe oben

if($zaehler[0]==„Monday“)
$zaehler[1]++;
if($zaehler[0]==„Tuesday“)
$zaehler[2]++;
if($zaehler[0]==„Wednesday“)
$zaehler[3]++;
if($zaehler[0]==„Thursday“)
$zaehler[4]++;
if($zaehler[0]==„Friday“)
$zaehler[5]++;
if($zaehler[0]==„Saturday“)
$zaehler[6]++;
if($zaehler[0]==„Sunday“)
$zaehler[7]++;

Alexander

Hallo Alexander,

vielen Dank für deine Antwort.

Ich habe mir das kopiert, und versuche es anhand deiner Angaben mal so wie du schreibst, neu zusammen zu bauen.

Frage; so richtig habe keine Ahnung von PHP, wäre das nicht evlt. o.k., wenn ich dir per Mail den ganzen Zähler schicke (ist per ZIP höchstes 10 KB denke ich), denn da fehlt ja noch vieles. Z.B. zeigt der auch eine Statistik für die gnaze Woche an, aber diese ist auch nicht so, wie ich sie haben möchte.

Kannst du mir das ändern ?

Jürgen

Hallo,

habs ausprobiert, aber nichts verstanden, keine Ahnung.

ok. vergessen wir das einfach.

-(

Jürgen