Marcus: Unerklärliche Warnung bei foreach

Beitrag lesen

Guten Morgen, liebe Mitstreiter,

Ich wollte mir für mein Gästebuch eine Reloadsperre einbauen, die folgendermassen aufgebaut ist:

function ReloadPruefen ($IP, $Zeitstempel)
{
  $DateiZeiger = fopen ("CSV.IP.csv", "r");

if ($DateiZeiger)
  {
    flock ($DateiZeiger, LOCK_SH);
    $DateiGroesse = filesize ("CSV.IP.csv");
    $BisherigerInhalt = fread ($DateiZeiger, $DateiGroesse);
    flock ($DateiZeiger, LOCK_UN);
    fclose ($DateiZeiger);
  }

if (count ($BisherigerInhalt) > 0)
  {
    foreach ($BisherigerInhalt as $Zeile)
    {
      $GesplitteteZeile = explode ("|", $Zeile);

if (($GesplitteteZeile [0] + 86400) > $Zeitstempel)
        $NeuerInhalt [] = trim ($Zeile) . "\n";
    }

if (count ($NeuerInhalt) > 0)
    {
      foreach ($NeuerInhalt as $Zeile)
      {
        $GesplitteteZeile = explode ("|", $Zeile);

if (trim ($GesplitteteZeile [1]) == $IP)
          $Gefunden = true;
      }
    }
  }

if (!$Gefunden)
  {
    $NeuerInhalt = $BisherigerInhalt . $Zeitstempel . "|" . $IP . "|" . "\n";

$DateiZeiger = fopen ("CSV.IP.csv", "w");
    flock ($DateiZeiger, LOCK_EX);
    fwrite ($DateiZeiger, $NeuerInhalt);
    flock ($DateiZeiger, LOCK_UN);
    fclose ($DateiZeiger);
    return false;
  }
  else
    return true;
}

Diese Funktion ist in einer eigenen PHP-Datei ausgelagert, die ich über include() in die Hauptdatei einbinde.

Sie scheint soweit auch fast zu funktionieren, da die Einträge in der Zieldatei CSV.IP.csv aktualisiert werden, allerdings bekomme ich folgende Warnung:

Invalid argument supplied for foreach()

Diese Warnung wird ja ausgegeben, wenn ein Array beispielsweise vorher nicht definiert wurde, was bei mir aber nicht der Fall ist:

$BisherigerInhalt = fread ($DateiZeiger, $DateiGroesse);

Die foreach-Schleife wird erst danach ausgeführt.

Diese Warnung bekomme ich auch, wenn schon Einträge in der Datei CSV.IP.csv gespeichert wurden.

Worin liegt die Ursache der Warnung ?

Danke für Eure Mithilfe.

Gruss, Marcus