"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Einfaches PHP guestbook

grOOvekill@ 13.01.2003 - 21:03 888 8
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
Nabend!

Hab ein kleines Problem und komm nicht auf die Lösung: Hier mein Skript für ein kleines guestbook in PHP:

<?php
// Dateizuweisung
$file = "counter.txt";

// Datei öffnen
$ftp = @fopen($file,"r+");

// Die ersten 10 Zeichen holen
$count = (int)fgets($ftp,10);

// Eine 1 addieren
$count++;

// Zeiger auf 0. Position setzen
rewind($ftp);

// Schreibt
fwrite($ftp,$count);

// Datei schließen
fclose($ftp);

// Das File zeigt sich selbst an
include($file);
?>


Ich bekomm jedoch die ganze Zeit folgende Fehlermeldung:

Warning: Supplied resource is not a valid File-Handle resource in /home/sites/site234/web/oben.php on line 16


Line 16 ist die, wo ich den Zeiger mittels rewind auf 0 setze (rewind($ftp); ). Dieses Skript ist auf einer anderen Site schon mal problemlos gelaufen. Warum nicht jetzt?

Irgendwelche Ideen?

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Zitat von grOOvekill@
$ftp = @fopen($file,"r+");
Dieses @ scheint mir auf den ersten Blick überflüssig zu sein ...

//Ups ... das am Ende nicht gelesen ... Das @ scheint mir trotzdem überflüssig zu sein
Bearbeitet von Vivo am 13.01.2003, 21:14

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
Zitat von Vivo
Dieses @ scheint mir auf den ersten Blick überflüssig zu sein ...

//Ups ... das am Ende nicht gelesen ... Das @ scheint mir trotzdem überflüssig zu sein

Nee, daran liegt's nicht. Irgendwas schmeckt ihm wahrscheinlich von den File-Berechtigungen her nicht. Aber was?

Vielleicht liegts auch daran, daß die zwei Files in zwei unterschiedlichen Ordnern liegen. Ich schmeiß mal beide in einen Ordner und versuch's nochmal.

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Zitat von grOOvekill@
Vielleicht liegts auch daran, daß die zwei Files in zwei unterschiedlichen Ordnern liegen. Ich schmeiß mal beide in einen Ordner und versuch's nochmal.
Wenn die Files in unterschiedlichen Ordnern liegen solltest du ihm evtl. noch den Paht mitgeben ...

Philipp

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 1924
Zitat von grOOvekill@
Nabend!

Hab ein kleines Problem und komm nicht auf die Lösung: Hier mein Skript für ein kleines guestbook in PHP:

Das ist aber ein Counter und kein Gästebuch :confused:

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Philipp
Das ist aber ein Counter und kein Gästebuch :confused:
hehe, wollt ich auch grad sagen :D

zum thema:
wenn du das "@" wegnehmen würdest, bringt das zwar im moment noch wenig, aber später, wenn mal ein script komplizierteres filehandling hat, kanns ganz schön nerven keine fehlermeldungen zu bekommen
wie dem auch sei, du hast deswegen eine fehlermeldung wie "file not found" oder ähnliches verpasst ;)

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4964
$file = fopen("count_main.dat","r+");
$count_main = fgets($file,5);
if (! $count_main)
$count_main=0;
rewind($file);
$count++;
fwrite ($file, $count_main);
fclose ($file);
echo $count_main;

?>

edit :
denk mal der source muest hin haun fuers mainfile , war der einzige den ich noch gfunden hab am webspace die andren sind in den tiefen der direktories versumpert bzw auf div hdds
Bearbeitet von DAO am 14.01.2003, 08:27

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2301
Ich bin ein ********! Natürlich geht es um einen Counter!!
:D:D:D

Philipp

Here to stay
Registered: Jul 2001
Location: Wien
Posts: 1924
Gut :). Hier eine leicht nachbearbeitete Variante des Counters:

Code: PHP
<?php
// Dateizuweisung
$file = "counter.txt"; 

// Datei öffnen
$ftp = @fopen($file,"r+") or die("Kann Datei $file nicht öffnen"); 

// Die ersten 10 Zeichen holen
$count = fgets($ftp,10); 

// Eine 1 addieren
$count++; 

// Zeiger auf 0. Position setzen
rewind($ftp); 

// Schreibt in Datei
if (flock($ftp, 2)) fwrite($ftp,$count); 

// FLock aufheben 
flock($ftp, 3);

// Datei schließen
fclose($ftp); 

// Zeigt counter an
echo $count; 
?>

$ftp = @fopen($file,"r+") or die("Kann Datei $file nicht öffnen");
Wenn fopen die Datei nicht öffnen kann bricht das Script mit einer Fehlermeldung ab.

if (flock($ftp, 2)) fwrite($ftp,$count);
Schützt die Datei mittels File Locking vor gleichzeitigen zugriffen. Wird unten mit flock($ftp, 3); wieder aufgehoben.

echo $count;
Zeigt die Variable $count an. Das ganze mit include() zu inkludieren ist ein unnötiger Lesezugriff ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz