Liebe(r) Sneap,
ich glaube, Du missverstehst da etwas. Wenn Du eine Datei mit "a" öffnest, dann wird der darin bereits vorhandene Inhalt nicht gelöscht, sondern beibehalten. Das hat nichts mit den Schreibzugriffen der Funktionen fwrite() oder fputs() zu tun. Eine solche Funktion schreibt grundsätzlich nacheinander neue Inhalte in die Datei, ohne irgendetwas Vorheriges dabei zu überschreiben!
Der Moment des "Überschreibens" geschieht lediglich beim Öffnen einer bereits vorhandenen Datei mit dem Parameter "w", da hiermit eine Leere Datei erzeugt, und eventuell anstelle einer bereits vorhandenen Datei erstellt wird. Solange eine einmal geöffnete Datei beschrieben wird, geschehen darin keine Überschreibungen durch fwrite() oder fputs(), es sei denn, Du manipulierst unterwegs absichtlich den Dateizeiger.
if($Logfile == true)
Das kann man kürzer notieren: if ($Logfile)
Wenn Du nicht explizit auf true prüfst (also andere Werte, die man so interpretieren könnte, nicht ausschließt), dann genügt die kürzere Variante. Wenn Du dagegen sicherstellen willst, dass der Inhalt von $Logfile einzig und allein true ist, dann brauchst Du drei Istgleichzeichen:
if ($Logfile === true)
Vergleiche hierzu folgendes:
if ("" == true) echo ("true!");
/* Ein Leerstring kann als false interpretiert werden. */
if (0 == true) echo ("true!");
/* Eine Null kann als false interpretiert werden. */
if (array(1,2,3) == true) echo ("true!");
/* Das habe ich jetzt nicht getestet, da ich bei soetwas immer mit empty($meinArray) prüfe. */
if ("abc" === true) echo ("true!");
/* Der String ist nicht leer, kann also als true gewertet werden. Hier ergibt das Ergebnis aber false, da der String selbst eben kein true ist, sondern ein String. Die drei Leerzeichen wollen keinen String, sondern einen Bool'schen Wert haben, um true zu ermöglichen. */
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)