Benutzercounter erstellen und einbinden

Y0gie

Grünschnabel
Benutzercounter erstellen und einbinden


-------

Moin Moin
Seit ca 3 tagen lese ich mich durch Foren und Totorien,
doch bis her konnte ich meine Probleme leider nicht lösen.
Ich benötige vorallem eine genaue Erklärung für die Einbindung


-------

mein Ziel ist es einen ganz einfachen Coutner zu erstellen.
Er soll auf der Seite, auf der er die Zugriffe zählen soll
nicht angezeigt werden.
Er soll wenn möglich einfach die zugriffe in einer Textdatei abspeichern.
Er soll mir die Zählung auf einer unterseite anzeigen.


-------

Frage 1: Ist dieser quellcode so richtig und für meinen Zweck geeignet?

<?php

$FilePointer = fopen("count.txt", "r+");
$Counter = fread($FilePointer, filesize("count.txt"));

$Counter++;

rewind($FilePointer);

fwrite($FilePointer, $Counter);
fclose($FilePointer);

echo"Summe der Besucher. $Counter.";

?>

-------

Frage 2: Muss ich diesen quellcode, so wie er da steht
als einzelne datei abspeichern oder wo anders einbinden?

-------

Frage 3:
Was und an weclher Stelle schreibe ich in die Datei bei der ich die Zugriffe zählen möchte?
Was und an weclher Stelle schreibe ich in die Datei in der ich die zugriffe anzeigen lassen möchte?

-------

Frage 4:
Wie mache ich aus meinen html dateien php dateien?

-------

Ich bedanke mich bei allen die bereit sind mir zu helfen.
ich komm leider eher aus der Grafik und nicht aus der Quelltext-Ecke =P
 
Hier eine Version, die wirklich arg simple ist. Also keine reload-Sperre und nichts. Aber das wolltest du ja scheinbar. Funkioniert ab PHP5.
PHP:
function counter($view)
{
    if( $view == 1 ) // Ist $view auf 1 gesetzt, wird nicht hochgezählt sondern nur $counter (Inhalt von count.txt) zurückgegeben
    {
        $counter = file_get_contents( 'count.txt' );
        return $counter;
    }
    else // Ansonsten wird der Counter um eins erhöht
    {
        $file = file_get_contents( 'count.txt' ); // Liest count.txt
        $file = file_put_contents( 'count.txt', $file+1 ); // Füllt count.txt
    }
}
file_get_contents( ) ist identisch zu file( ).
file_put_contents( ) bewirkt das gleiche was fopen(), fwrite() und fclose() tun. Allso alles mit nur einer Funktion.

Somit kannst du mit counter(0); die Zugriffe zählen. Und mit counter(1); die Anzahl der Zugriffe ausgeben wo du willst.

Wie man Dateien einbindet kannst du hier nachlesen und wie man Funktionen einbindet hier.
 
danke ersteinmal =)
ein bischen schlauer bin ich ja schon
aber klappen tuts bei mir noch nicht

also ich habe nun eine datei "dercounter.php" angelegt
<?php
function counter($view)
{
$view = 0
if( $view == 1 ) // Ist $view auf 1 gesetzt, wird nicht hochgezählt sondern nur

$counter (Inhalt von count.txt) zurückgegeben
{
$counter = file_get_contents( 'count.txt' );
return $counter;
}
else // Ansonsten wird der Counter um eins erhöht
{
$file = file_get_contents( 'count.txt' ); // Liest count.txt
$file = file_put_contents( 'count.txt', $file+1 ); // Füllt count.txt
}
}

?>

un eine datei "aufruf"
<?php


include "dercounter.php";

echo "bisherige aufrufe ".$file.;


?>

sowie die datei count.txt

in der datei count.txt wird immer der aktuelle wert reingeschrieben
mit der datei aufruf.php gebe ich den wert aus, ohne das ich mit include die datei dercounter.php reinlade, hoffe das ist soweit richtig.

bei der datei habe ich view den wert 0 zugeordnet damit in der schleife hochgezählt wird.
wo ist nun mein fehler bzw was habe ich falsch verstanden?
 
Hi, du bist auf dem richtigen Weg, es fehlt nur eine Kleinigkeit:
PHP:
<?php
include "dercounter.php";

echo "bisherige aufrufe ".$file.;
?>
Hier musst du die Funktion counter aufrufen.
Zum Beispiel so:
PHP:
<?php
include "dercounter.php";

echo "bisherige aufrufe ".counter(1);
?>

Und bei der Datei in der die Zugriffe gezählt werden sollen, musst du dercounter.php einbinden wie bei aufruf.php und den Counter aufrufen mit counter(0), dann wird jeder Zugriff gezählt.
 
aso ich habe das bisher immer so verstanden,dass in die datei indie ich schreibe ,also in count.txt nur der wert reinkommt.
gut dann soll count.txt also wie volgt aussehen

include "dercounter.php";
counter(0),
0

oder muss ich nun noch angeben in welchen bereich ich schreiben will?


noch es nicht , wenn ich aufruf.php aufrufe bekomm ich eine fehlermeldung
Parse error: syntax error, unexpected T_IF in /home/www/web117/html/dercounter.php on line 5


zeile5 ist wie oben uch zu sehen diese hier
if( $view == 1 )
 
Der Fehler kommt, weil du meinen Kommtar umgebrochen hast, der muss in einer Zeile bleiben, oder ganz verschwinden :)
Übernimm die Funktion so:
PHP:
function counter($view)
{
    if( $view == 1 )
    {
        $counter = file_get_contents( 'count.txt' );
        return $counter;
    }
    else
    {
        $file = file_get_contents( 'count.txt' );
        $file = file_put_contents( 'count.txt', $file+1 );
    }
}
$view = 0 ist nicht erforderlich in der Funktion.

Dann nochmal zum Aufrufen:
count.txt bleibt leer, bis auf die Zahl.

In aufruf.php schreibst du counter(1); dadurch wird die aktuelle Zahl aus der Datei count.txt ausgegeben.
Zum Beispiel so:
PHP:
echo 'Die Datei wurde ' .counter(1). ' mal aufgerufen.';
In der Datei, in der die Zugriffe gezählt werden sollen bindest du dercounter.php ein und notierst counter(0);
Zum Beispiel so:
PHP:
<?php
    include "dercounter.php";
    counter(0);
?>
<html>
<head>
</head>
    <body>
        
    </body>
</html>
 
ah dann habe ich dich vorhin gleich mehrfach falsch verstanden mein fehler....
gut ich habe das soweit koregiert.

nun bekomm ich diese fehlermeldung
Warning: file_put_contents(count.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web117/html/dercounter.php on line 12
11


warum weise ich hier eigendlich der linken seite die rechte seite zu?
müsste ich nicht der rechtenseite, also der text datei, die linke seite bzw die vaiable +1 zuweisen?
 
du bist aber auch auf zack *strahL*
ehm ich glaube nun ist der punkt gekommen wo ich nicht genau weis was du meinst
bisher kam mir aus meinen informatik-semestern noch alles bekannt vor..

mir ist bewusst das ich irgendwie den lese-schreibzugriff eisntellen muss,aber nicht wie ich das genau mache

ich nutze das ftp programm filezilla
da kann ich auf jedenfall bei den ordnern die fileattributs einstellen
da habe ich für den ordner hrml diese einstellungen

-------
owner permissions
read write execute

groupe permissions
read write execute

public permissions
read write execute

numeric value:777
(x=attributs not the same for all selected files)

please note not all servers understand this command. this command is mostly used by unix servers.
-------
da ist im moment alles aktiviert.
oder meinst du was anderes?
ist das vileicht das falsche programm dafür?
 
In Filezilla: Rechtsklick auf die Datei (count.txt) => Dateiattribute auswählen => Numerischer Wert, dort 777 eintragen.

Zu deiner anderen Frage:
PHP:
        $file = file_get_contents( 'count.txt' );
        $file = file_put_contents( 'count.txt', $file+1 );
Zuerst wird in $file der Inhalt von count.txt gelesen. Danach wird $file neu geschrieben und zwar wird mit $file+1 der Inhalt aus $file den wir mit file_get_contents geholt haben um eins erhöht. Man könnte es der Übersicht wegen auch anders schreiben:
PHP:
        $file = file_get_contents( 'count.txt' );
        $counter = file_put_contents( 'count.txt', $file+1 );
 
Zuletzt bearbeitet:
Zurück