Supportnet Computer
Planet of Tech

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.

<?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.


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.

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

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)

<?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>";
}
?>

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.

<?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>";
?>


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: