Homepage selbermachen 7.851 Themen, 35.615 Beiträge

Frage zu simplem PHP Counter

Hausmeister Krause / 14 Antworten / Baumansicht Nickles

Hallo zusammen,

ich lerne gerade etwas PHP und wollte mir nun einen Counter so als Übung zusammenstricken.

Dies ist der PHP Code

<?php
function counter() {
$name = "counter.txt"; $count = 0;
$datei = fopen($name, "r+");
if ($datei) {
flock($datei, LOCK_EX);
$count = fgets($datei, 10);
fseek($datei, 0);
echo ''.++$count.'';
fwrite($datei, $count);
fclose($datei);
}
else {
echo "Datei ist gesperrt";
}
}
?>

Das Problem: Der Couter zählt nicht hoch. Ich bekomme keinen PHP Fehler oder "Parse Error".
Der Inhalt der counter.txt wird angezeigt (habe ihn mal per Hand auf 1 gesetzt), aber der Wert in der Datei wird nicht erhöht.

Wo kann der Fehler liegen?

Wenn Du Sorgen hast, dann erzähle sie nicht Deinen Freunden, sondern Deinen Feinden, denn die freuen sich darüber. - Harald Lesch
bei Antwort benachrichtigen
Borlander Hausmeister Krause „Frage zu simplem PHP Counter“
Optionen
echo ''.++$count.'';
Rechenoperationen innerhalb von Strings solltest Du umbedingt in Klammern setzten. Womöglich liegt es schon daran. Abgesehen davon: Wozu gibst Du überhaupt noch davor einen leeren String aus?
bei Antwort benachrichtigen
Hausmeister Krause Borlander „ Rechenoperationen innerhalb von Strings solltest Du umbedingt in Klammern...“
Optionen

hi,
nein an der klammer liegt es nicht. auch mit klammer habe ich den selben effekt.

wo gebe ich denn einen leeren string aus?
ich sehe grad, dass der code nicht ganz korrekt hier angegeben ist. habe ein paar html tags nicht maskiert.
die echo zeile sieht korrekt so aus:

ich habe die echo zeile in meinem scropt korrigiert. sie sieht jetzt so aus
echo ++$count;
aber auch mit klammer klappt es nicht.
echo (++$count);


Wenn Du Sorgen hast, dann erzähle sie nicht Deinen Freunden, sondern Deinen Feinden, denn die freuen sich darüber. - Harald Lesch
bei Antwort benachrichtigen
Zaphod Hausmeister Krause „hi, nein an der klammer liegt es nicht. auch mit klammer habe ich den selben...“
Optionen

Nimm mal "count++".
Ausserdem setzt du bei jedem Funktionsaufruf den Counter ja wieder auf 0 ...

HTH, Z.

bei Antwort benachrichtigen
Zaphod Hausmeister Krause „hi, nein an der klammer liegt es nicht. auch mit klammer habe ich den selben...“
Optionen
  <?php
function counter() {
$name = "counter.txt";
$datei = fopen($name, "r+");
if ($datei) {
flock($datei, LOCK_EX);
$count = fgets($datei, 10);
fseek($datei, 0);
$count++;
fwrite($datei, $count);
fclose($datei);
}
else {
$count = "Datei ist gesperrt";
}
return ($count);
}
?>


Getestet und geht ...

HTH, Z.
bei Antwort benachrichtigen
rumblefrog1 Zaphod „ Getestet und geht ... HTH, Z.“
Optionen


Yoo , passt nicht ganz, aber 'nen Counter proggen - wozu ?

Das Rad wurde bereits erfunden: Am einfachsten: http://www.knut-hilft.de/zaehler.php


MFG
bei Antwort benachrichtigen
Zaphod rumblefrog1 „ Yoo , passt nicht ganz, aber nen Counter proggen - wozu ? Das Rad wurde bereits...“
Optionen

Vielleicht weil nicht jeder davon abhängig sein will, dass externe Dienste sauber funktionieren?
Wer garantiert mir denn, dass das Ding auf meinem Webspace nur das macht, was es sagt?
Vielleicht will der Hausmeister ja auch einfach mal PHP lernen ...

HTH, Z.

bei Antwort benachrichtigen
rumblefrog1 Zaphod „Vielleicht weil nicht jeder davon abhängig sein will, dass externe Dienste...“
Optionen


Korrekt @Zaphod, die letzte Zeile lass ich gelten. aber sonst ...

MFG
bei Antwort benachrichtigen
Olaf19 rumblefrog1 „ Korrekt @Zaphod, die letzte Zeile lass ich gelten. aber sonst ... MFG “
Optionen

Ist ja nett von dir, dass du Zaphods letzte Zeile gelten lässt - aber schau doch mal, was der Hausmeister gleich in seiner ersten(!) Zeile geschrieben hat:

ich lerne gerade etwas PHP und wollte mir nun einen Counter so als Übung zusammenstricken.

Noch Fragen?

CU
Olaf

Die Welt ist ein Jammertal ohne Musik. Doch zum Glueck gab es Bach, Beethoven, Haendel und Goethe (Helge Schneider)
bei Antwort benachrichtigen
rumblefrog1 Olaf19 „Guten Morgähn...“
Optionen


Jaja Olaf19 - Du bist mein G-Wissen !

Ist korrekt.

MFG


bei Antwort benachrichtigen
Hausmeister Krause rumblefrog1 „ Jaja Olaf19 - Du bist mein G-Wissen ! Ist korrekt. MFG “
Optionen

nabend zusammen. der counter funktioniert jetzt. sogar mit meinem ursprünglichen code.

der fehler schien was mit den schreibrechten auf die textdatei zu tun haben.

ich habe die sache auf meinem linuxrechner unter meinem normalen benutzer erstellt.
habe normal eine datei angelegt mit der endung "counter.txt".
hat nicht geklappt.

nun habe ich die datei mal mit windows geöffnet. mal den dort eingetragenen wert gelöscht und neu geschrieben und dann die
datei wieder gespeichert.

plötzlich zählt der counter.

wieso hab ich unter linux scheinbar keine schreibrechte auf eine datei, die ich selber angelegt habe?

verstehen tu ich das ganze nicht.

Wenn Du Sorgen hast, dann erzähle sie nicht Deinen Freunden, sondern Deinen Feinden, denn die freuen sich darüber. - Harald Lesch
bei Antwort benachrichtigen
Borlander Hausmeister Krause „nabend zusammen. der counter funktioniert jetzt. sogar mit meinem...“
Optionen
wieso hab ich unter linux scheinbar keine schreibrechte auf eine datei, die ich selber angelegt habe?
Du hast, der Webserverprozess allerdings nicht. Typischerweise läuft der unter einem eigenen Benutzerkonto - das ist auch sinnvoll ;-)

bei Antwort benachrichtigen
Hausmeister Krause Borlander „ Du hast, der Webserverprozess allerdings nicht. Typischerweise läuft der unter...“
Optionen

öhm ja... das leuchtet ein. klar :)

welche rechte bräuchte denn dann die datei, wenn der webserver nicht bei mir, sondern bei meinem provider läuft?
oder muss ich den zugriff auf die datei für alles und jeden erlauben?

Wenn Du Sorgen hast, dann erzähle sie nicht Deinen Freunden, sondern Deinen Feinden, denn die freuen sich darüber. - Harald Lesch
bei Antwort benachrichtigen
Zaphod Hausmeister Krause „öhm ja... das leuchtet ein. klar : welche rechte bräuchte denn dann die datei,...“
Optionen
muss ich den zugriff auf die datei für alles und jeden erlauben?
Das sollte man niemals tun ;-).
Entweder nimmst du deinen Arbeitsbenutzer in die Web-Gruppe mit rein, dann gibst du der Gruppe Schreibrechte.
Oder - und das ist die saubere Lösung - du übereignest die Gruppe dem Web-Eigentümer. Bei Debian heisst der www-data.
Das geht auch, in dem du die Datei von einem PHP-Script anlegen lässt, dann erbt sie die Rechte vom erzeugenden Script ...

HTH, Z.
bei Antwort benachrichtigen
Hausmeister Krause Zaphod „ Das sollte man niemals tun - . Entweder nimmst du deinen Arbeitsbenutzer in die...“
Optionen

stimmt, klingt logisch.

ne wunderbar, dann such ich mir mal den php befehl raus, und dann werd ich prüfen ob datei vorhanden. wenn nicht, soll die datei direkt angelegt werden.so müsste dann ruhe sein.

danke

Wenn Du Sorgen hast, dann erzähle sie nicht Deinen Freunden, sondern Deinen Feinden, denn die freuen sich darüber. - Harald Lesch
bei Antwort benachrichtigen