Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Besuchercounter funktioniert nicht.
Frage
Hallo,
ich habe mir einen kleinen Besuchercounter selber gebastelt. Aber leider funktioniert er nicht.
Der Zähler bleibt immer bei der selben Besucherzahl. Normalerweise sollte der Zähler nach jeder Session weiterzählen, aber er bleibt immer bei "1".
Den chmod (Unix-Code) habe ich sogar auf 777 gestellt, aber es tut sich trotzdem nix.
Hier der Code:
counter.php
<?php
// Cookie wird gesetzt
setcookie("count", "yes");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Ein Cookie-Textcounter</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
<h2>Ein Textcounter</h2>
<p>Die Seite wurde
<b><?php
$fp = fopen("count.txt", "r+");
$counter = fgets($fp,10);
echo $counter;
if (isset($_COOKIE["count"]) && $_COOKIE["count"] != "yes") {
$counter++;
}
rewind($fp);
fputs($fp, $counter);
fclose($fp);
?></b>-mal aufgerufen.</p>
</body>
</html>
Hier die Cookie-Datei:
count.txt:
1
Selbst nach 24 Stunden tut sich nix.
Wenn ich bei
<?php
// Cookie wird gesetzt
setcookie("count", "yes");
?>
noch [i]time() + 86400 [/i]hizufüge, also:
<?php
// Cookie wird gesetzt
setcookie("count", "yes", time() + 86400 );
?>
tut sich nach 24 Stunden ebenfals nichts.
Ist ein fehler im Code?
Danke
Struggle
Antwort 1 von Goofyhorn
bin mir nicht sicher ... aber
öffnet die datei doch nur, oder?
also das r steht für read ... denke, du musst es anders öffnen.
Zitat:
$fp = fopen("count.txt", "r+");
$fp = fopen("count.txt", "r+");
öffnet die datei doch nur, oder?
also das r steht für read ... denke, du musst es anders öffnen.
Antwort 2 von Risatara2
´r+´: Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei
Quelle: PHP.net
Quelle: PHP.net
Antwort 3 von Struggle
Hm, und wieso funktioniert das dann nicht, dass der Zähler weiterzählt?
Irgendwas ist doch falsch, oder?
Gruß
Struggle
Irgendwas ist doch falsch, oder?
Gruß
Struggle
Antwort 4 von LittleT
//Counter einfuegen
function session_counter()
{
session_start();
$dateiname="counter.txt";
if(!session_is_registered(´counter´))
{
if(file_exists($dateiname))
{
$datei = fopen($dateiname, "r");
$akt_zaehler = fgets($datei, 1024);
fclose($datei);
}
$akt_zaehler++;
$datei = fopen($dateiname,"w");
$put = fputs($datei,$akt_zaehler);
fclose($datei);
session_register(´counter´);
}
$datei = fopen($dateiname,"r");
$akt_zaehler = fgets($datei,1024);
return $akt_zaehler;
}
//Der Aufruf dann wie folgt:
echo "<font face=´Arial´>Counter: <b>" . session_counter() . "</b></font>";
function session_counter()
{
session_start();
$dateiname="counter.txt";
if(!session_is_registered(´counter´))
{
if(file_exists($dateiname))
{
$datei = fopen($dateiname, "r");
$akt_zaehler = fgets($datei, 1024);
fclose($datei);
}
$akt_zaehler++;
$datei = fopen($dateiname,"w");
$put = fputs($datei,$akt_zaehler);
fclose($datei);
session_register(´counter´);
}
$datei = fopen($dateiname,"r");
$akt_zaehler = fgets($datei,1024);
return $akt_zaehler;
}
//Der Aufruf dann wie folgt:
echo "<font face=´Arial´>Counter: <b>" . session_counter() . "</b></font>";