Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Counter mit sperre?wie geht das?
Frage
Hallo,
habe mal ne frage habe mir in php ne counter geschreiben. geht auch alles bin shconmal stolz auf mich!!habe erst angefangen!!naja aber wie kann man da jetzt so ne sperre einbauen das er einen besucher net immer wieder zählt wenn der die site aktualliesiert!!
bye ofman
Antwort 1 von semi
Das hier sollte funktionieren.
Gruß,
Michael
<?php
session_start();
if(!session_is_registered('visited')) {
session_register('visited');
# Counter aktualisieren
}
# Rest der Seite
?>
Gruß,
Michael
Antwort 2 von MixMax
du kannst mit sessions arbeiten, wenn eine neue Session gestartet wird dann zählen, sonst nicht.
die Anweisungen in der If-funktion werden nur beim 1. betreten der seite aufgerufen.
du kannst mit echo $thisuser; die anzahl der seitenaufrufe seit betreten ausgeben (sonst lasse das mit dem else einfach weg)
session_start();
if (!session_is_registered("thisuser")) {
session_register("thisuser");
$thisuser = 1;
# und den globalen Counter zählen lassen
}
else {
$thisuser++;
}
die Anweisungen in der If-funktion werden nur beim 1. betreten der seite aufgerufen.
du kannst mit echo $thisuser; die anzahl der seitenaufrufe seit betreten ausgeben (sonst lasse das mit dem else einfach weg)
Antwort 3 von MixMax
miiiist - zu spät und fast den gleichen Text - lool.
also Semi - meiner hat dafür eine funktion mehr.
also Semi - meiner hat dafür eine funktion mehr.
Antwort 4 von semi
Gemeinsam sind wir stark. :-)
Antwort 5 von ofman
sorry falscher code!!hier sit der richige!!
<?php
session_start();
if(!session_is_registered('visited')) {
session_register('visited');
# Counter aktualisieren
}
# Rest der Seite
$fd = fopen("count.dat","r+");
$count = fgets($fd,1000);
if (! $count)
$count=0;
rewind($fd);
$count++;
fwrite ($fd, $count);
fclose ($fd);
echo "<center><b>" . $count . "</b> </center>";
?>
bye ofman
http://mitglied.lycos.de/turnierundliga/counter/counter.php3
<?php
session_start();
if(!session_is_registered('visited')) {
session_register('visited');
# Counter aktualisieren
}
# Rest der Seite
$fd = fopen("count.dat","r+");
$count = fgets($fd,1000);
if (! $count)
$count=0;
rewind($fd);
$count++;
fwrite ($fd, $count);
fclose ($fd);
echo "<center><b>" . $count . "</b> </center>";
?>
bye ofman
http://mitglied.lycos.de/turnierundliga/counter/counter.php3
Antwort 6 von ofman
ich bekomme jetzt immer ne fehler meldung in line 14!!guck dir das mal an ich ahbe davon noch ent soviel ahnung!!http://mitglied.lycos.de/turnierundliga/counter/counter.php3
Antwort 7 von MixMax
ich mache heute auch nur fehler..
ich glaube so gehts (ungetestet)
ich glaube so gehts (ungetestet)
<?php
session_start();
$fd = fopen("count.dat","r+");
$count = fgets($fd,1000);
if (! $count) $count=0;
if(!session_is_registered('visited')) {
session_register('visited');
rewind($fd);
$count++;
fwrite($fd, $count);
}
fclose($fd);
echo "<center><b>$count</b></center>";
?>
Antwort 8 von ofman
Hi, der geht irgendwie noch ent wie ich mir das vorstelle. wenn man ejtzt die site aktualliesiert wird der counter manchmal net angezeigt?warum? mien code sieht jetzt so aus:
<?php
session_start();
if(!session_is_registered('visited')) {
session_register('visited');
$fd = fopen("count.dat","r+");
$count = fgets($fd,1000);
if (! $count)
$count=0;
rewind($fd);
$count++;
fwrite ($fd,$count);
}
fclose ($fd);
{
echo "<center><b>" . $count . "</b> </center>";
}
?>
<?php
session_start();
if(!session_is_registered('visited')) {
session_register('visited');
$fd = fopen("count.dat","r+");
$count = fgets($fd,1000);
if (! $count)
$count=0;
rewind($fd);
$count++;
fwrite ($fd,$count);
}
fclose ($fd);
{
echo "<center><b>" . $count . "</b> </center>";
}
?>
Antwort 9 von MixMax
nimm den von meiner letzten antwort, hatte ganz vergessen das so wie zuvor geschrieben der counter nicht nur nicht hochgezählt sondern ja auch nicht gelesen wird. außerdem kannst du das echo ändern, in "" braucht kannst du Variablen direkt reinschreiben.
Antwort 10 von ofman
Also den habe ich jetzt genommen da habe ich ja das prob!!kannste mir mal den ganzen code geben wie das dann gehen soll!ich will das irgendwie schaffen!!so php schreiben usw!versuche mich gerade auch ne MYsql datenbank zu machen!
Antwort 11 von semi
Das Skript aus Antwort 7 funktioniert einwandfrei.
Hier noch einmal meine Lösung.
Hier noch einmal meine Lösung.
<?php
session_start();
if(!session_is_registered('visited')) {
session_register('visited');
# Zugriff für andere sperren
$lockfn = "count.lock";
while(true) {
while(file_exists($lockfn)) sleep(1);
$lockf=fopen($lockfn, "w");
if($lockf) {
fclose($lockf);
break;
}
}
# Zähler holen und inkrementieren
$count = (file_exists("count.dat"))?implode("", file("count.dat")):0;
$count++;
# und speichern
$fd = fopen("count.dat", "w");
fputs($fd, $count);
fclose($fd);
# Zugriff wieder erlauben
unlink($lockfn);
}
else
$count = implode("", file("count.dat"));
echo "<center><b>" . $count . "</b> </center>";
?>

