Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Azasel

unregistriert

1

25.07.2017, 22:46

[Php] Wieso kann ich nichts in die .txt Datei schreiben?

Hey,
Ich möchte nur mittels php und html (kein SQL!) die Besucherzahl zählen und auf der Webseite anzeigen lassen.
Nur leider wird die Textdatei nicht aktualisiert in der die Besucherzahl reingeschrieben wird, also die Datei öffnen und aus der lesen klappt prima, aber reinschreiben kann ich nicht.
Was ich auch gemacht habe, ist die Modifikationen für die Textdatei auf 777 zu ändern, so dass ich alle Rechte auf dem Webserver im Bezug auf die Datei habe.
In der Textdatei habe ich noch zusätzlich die Zahl 0 geschrieben.
Übrigens benutze ich einen fremden Webserver (bplaced.net) und nicht meinen eigenen.
Zusätzlich noch FileZilla um die Dateien zu verwalten.

Nun zum Quellcode.
Der Code sähe in etwa so aus:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
...
<p>Die Seite wurde <b>
<?php
  $fp fopen("counter.txt","r+");
  $inhalt fgets($fp,20);
  echo $inhalt;
  $inhalt++;
  rewind($fp);
  fputs($fp$inhalt);
  fclose($fp);
?>
</b> mal aufgerufen</p>
...


P.s. das Konzept für den Quellcode habe ich aus dem Buch "PHP und MYSQL für Kids" entnommen.

Danke schon mal für ernstzunehmende Beiträge.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

25.07.2017, 23:08

Probier mal folgendes:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
<?php

$counter file_get_contents('counter.txt');
if ($counter === false) {
    print 'Datei konnte nicht geöffnet werden';
} else {
    print $counter;
    file_put_contents('counter.txt'$counter++);
}


fopen und co verwendet man i.d.R. nicht mehr. Spart auch direkt Code. ;)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

@zimmer

Alter Hase

Beiträge: 1 135

Wohnort: NRW Germany

  • Private Nachricht senden

3

26.07.2017, 07:34

Architekt, danke für den Code.
leider musste ich die ++ in eine extra Zeile tippen aber so geht es.

PHP-Quelltext

1
2
$counter++;
file_put_contents('counter.txt'$counter);

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

26.07.2017, 08:16

Es hätte in Zeile 8 ja auch "++$counter" heißen müssen. ;) Besser wäre meiner Meinung nach sowieso "$counter + 1" gewesen, das ist viel direkter und manipuliert nichts am Counter selbst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

26.07.2017, 09:33

Außerdem sollte man in der Praxis aufpassen, dass sich nicht zwei PHP-Prozesse in die Quere kommen, die gleichzeitig aus der Datei lesen und in sie hineinschreiben. Das geht z. B. mit flock. Oder man benutzt eine Datenbank mit Transaktionen.

Azasel

unregistriert

6

26.07.2017, 11:59

Hat alles leider nicht geklappt und wie ich bereits sagte, ich kann die Datei auslesen und die Zahl ausgeben, also war mein Quellcode doch vorher gar nicht so verkehrt?
Aber den Inhalt ändern oder neu in den File schreiben kann ich nicht.
Gibt es noch etwas anderes, was ich probieren könnte?
Ich gebe noch mal ein paar Informationen mit, die vielleicht wichtig sein könnten:

Die Berechtigungen an den Dateien counter.txt und index.txt habe ich die selben Rechte zugewiesen.

(Link)

Der Quellcode:

(Link)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

26.07.2017, 12:09

Was sagt denn das Fehler-Log?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

8

26.07.2017, 12:20

Probier mal

PHP-Quelltext

1
2
3
4
$bytes file_put_contents('counter.txt'$counter);
if ($bytes === false) {
    print 'Datei konnte nicht geschrieben werden';
}

Und wenn die Ausgabe kommt, guck ins Error-Log für weitere Informationen.
Ggf. hilft es auch file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . 'counter.txt', $counter); zu schreiben.
Was meinst du mit index.txt? Du meinst index.php oder?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Azasel

unregistriert

9

26.07.2017, 12:24

Was meinst du mit index.txt? Du meinst index.php oder?

Ja :D

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

26.07.2017, 12:30

Was passiert, wenn file_put_contents einen binary value als Input bekommt?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige