URL: https://www.overclockers.at/coding-stuff/php_speicher_prob_47459/page_1 - zur Vollversion wechseln!
HELP!
hab gerade einen kleinen einfachen counter probiert! bitte net schlagen ist mein 1ster php versuch
es wird die counter.txt nicht erstellt! wenn ich sie erstell wird sie ausgelesen um 1nes erhöht aber NICHT abgespeichert!
wo liegt mein fehler!?
danke
realRP
--
<?
if (file_exists("counter.txt"))
{
$datei=fopen("counter.txt","r");
$zaehler=fgets($datei,255);
fclose($datei);
}
$zaehler++;
$datei=fopen("counter.txt","w");
fputs($datei,"$zaehler");
fclose($datei);
echo "Sie sind der <b>$zaehler.</b> Besucher!";
?>
Ich sehe hier keine gbuch.txt sondern nur counter.txt
Verwendest du einen Unix Server? Dann musst du der Datei erst Schreibrechte geben. Das kannst du z.B. mit deinen FTP Client bzw. über Shell mit chmod 777 counter.txt machen.
jo counter.txt sorry verwexlt und schon editied! rechte schreibsln keine ahnung werd i glei mal probieren!
ich habs so geloest meinen ersten counter
<?
$file = fopen ("count.dat","rw+");
$count = fgets ($file,10);
$count++;
rewind ($file);
fwrite ($file,$count);
fclose ($file);
?>
<?
echo $count;
?>
Da fällt mir noch ein: Man sollte generell die flock (File Locking) Funktion verwenden wenn man in Dateien schreibt, sonst kann es leicht passieren das der Counter wieder bei 0 anfängt.
Warning:
flock() is not supported on antiquated filesystems like FAT and its derivates and will therefore always return FALSE under this environments (this is especially true for Windows 98 users).
wennst dich beim @home testen maybe wunderst warum nix geht
So würe ich das lösen.Code: PHP<?php $file = "counter.txt"; $fh = @fopen($file, "r+") or die("<br>Öffnen von <i>$file</i> gescheitert"); @flock($fh, LOCK_SH) or die("<br>Sperren von <i>$file</i> gescheitert"); $s = @fgets($fh, 6); $count = (int) $s + 1; $count = str_pad($count, 6); @rewind($fh) or die("<br>Rücksetzen von <i>$file</i> gescheitert"); if (@fwrite($fh, $count) == -1) { die("<br>Schreiben in <i>$file</i> gescheitert "); } echo "$count"; @flock($fh, LOCK_UN) or die("<br>Unlock von <i>$file</i> gescheitert"); fclose($fh) or die("<br>Schließen von <i>$file</i> gescheitert"); ?>
Hmm, File Locking hat's schon unter DOS gegeben mit SHARE.EXE, also versteh ich nicht ganz, wieso's jetzt nicht mehr gehen soll.
nur weils dos kann heissts noch lang nicht das php das feature dort das unterstuetzung
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025