[PHP] funktion file_exists funtzt nicht ...

Brom

Gummibärchen
13 Januar 2007
656
69
hallo ;

ich wollte mal wieder ein Script proggen bei diesem soll bei einer funktion geprüft werden ob die datei schon auf dem server ist oder nocht .

es funtz aber nicht :

PHP:
<?php 
$user = "$_POST[textfield]" ;
$write = "0" ;
$filename = 'betteln/$user.txt';
$datei = fopen("betteln/$user.txt", "w+");
if (file_exists($filename)) 
{
   print "Dieser User hat den Bettellink schon aktiviert.";
} 
else 
{
   fwrite($datei, $write);
   fclose($datei);
   echo "Bettellink erfolgreich aktiviert.";
}
?>

mfg powergrafik
 
Zuletzt bearbeitet:
$filename = "betteln/$user.txt";
oder $filename = 'betteln/'.$user.'.txt';

Alles was in ' ' steht wird nicht geparst, du suchst also nach einer Datei $user.txt und nicht nach einer mein_username.txt wie da mal vermute.
 
PHP:
$user = "$_POST[textfield]" ;

Das ist ja auch mal wieder ne Glanzleistung :D

Ich würde auch sagen, dass das dann mit den unterschiedlichen Anführungszeichen zu tun hat. Bei der Speicherung wird der Username dazu geschrieben :)arrow: richtige Datei wird erstellt) und beim lesen wird unabhängig vom user nach der (nicht vorhandenen) Datei $user.txt gesucht.

Die Debuggingtipps habe ich dir doch auch schonmal gesagt und dann siehst du ganz schnell, warum die Funktion angeblich nicht funktioniert (wenn ich fu(r|n)zen lese, bekomme ich Blähungen :ugly: )

Und noch ne Sache: Die Datei wir mit fopen() geöffnet, aber nur in einem Fall per fclose() wieder geschlossen. Warum schreibst du nicht
PHP:
$user = $_POST['textfield'];
$write = "0" ;
$filename = 'betteln/'.$user.txt;
if (file_exists($filename)) {
   print "Dieser User hat den Bettellink schon aktiviert.";
} else {
   $datei = fopen($filename, "w+");
   fwrite($datei, $write);
   fclose($datei);
   echo "Bettellink erfolgreich aktiviert.";
}
 
Warum schreibst du nicht[...]
Vllt, weil er sowas noch nich kannte? :ugly:

Hauptsache Code hingeschrieben und ab dafür nach Lose4Scripts zum Reich werden :mrgreen:

@powergrafik: Wieso nutzt du nicht echo/print einheitlich, sondern abwechselnd?
BTW: Ich würde dir noch zu einem Templatesystem raten, dieser echo Mist is Mist^^
Und was mir grade noch auffält: Wieso schreibst du Integer als Strings?

(wenn ich fu(r|n)zen lese, bekomme ich Blähungen :ugly: )
Ich würde sagen, dass kommt von Funzel, allerdings hat er mitten im Wort aufgehört zu schreiben und das T ist ausversehen da zwischen gekommen, als er das Z gedrückt hat :ugly: :mrgreen:
 
zum glück kann ich das nicht riechen ...:ugly: :mrgreen: ;)

es klappt jetzt fast es gibt noch einen fehler der speichert die dateien jetzt als usernmaeblablatext der punkt fehlt wie kann ich den einbauen ??
 
zes klappt jetzt fast es gibt noch einen fehler der speichert die dateien jetzt als usernmaeblablatext der punkt fehlt wie kann ich den einbauen ??
In dem du da nen Punkt hinsetzt :roll:
PHP:
$filename = 'betteln/'.$user.'.txt';

Aber ich seh da keinen Sinn drinn, für jeden User ne Textdatei mit dem Inhalt 0 zu erstellen. Wäre es nicht viel einfacher, alle Usernamen, die sonst ne Datei haben, in eine Datei zu schreiben und dann zu überprüfen, ob der Username darin ist?
Aber ich würde eh zu nem DBS raten.
 
Wenn man schon was schreibt, sollte man auch halbwegs bei der Sache sein *selbstaufhinterkopfschlag*

@flaschenkind: Natürlich wäre sowas die perfekte Aufgabenstellung für eine Datenbank. Aber bring das mal rüber.. Na ich probiers mal ;)

@powergrafik:
Was passiert eigentlich, wenn jemand mal schaut wie schnell der Webspace voll wird, wenn per Endlosschleife das davor stehende Formular mit beliebigen Usernamen abgesendet wird. Je nach Clustergröße des Dateisystems z.B. 4 KB pro Datei sind bei 1000 Dateien 4 MB und das ganze 1000 mal gemacht sind 4 GB. Wo und wie prüfst du das Eingabeformular also auf sinnvolle Werte? Wo sind die Usernamen gespeichert?
 
@joshi

das mit 0 war nur son test fürs forum natürlichmacht das keinen sinn ....
und ich werde auch nicht textdateien schreiben lassen ..