Enrico: Einfacher Reloadschutz auf Textbasis greift nicht

Beitrag lesen

Guten Morgen, liebe Workaholics ;-)

Als Einstieg in unser Gästebuch wird zunächst ein Menü angezeigt, das folgende Punkte enthält:

-Eintrag erstellen
-Einträge lesen
-Gästebuch verwalten
-Statistik anzeigen

Nun habe ich in dieser Menüdatei einen einfachen Reloadschutz auf Textbasis mit Vergleich der IP-Adresse und des Zeitstempels eingebaut, der die Schaltfläche "Eintrag erstellen" verstecken bzw. anzeigen soll, je nach dem, ob innerhalb eines vorgegebenen Zeitraums bereits ein Eintrag erstellt wurde oder nicht:

<html>
  <head>
    ...
  </head>
  <body>
    <?php

$Zeitstempel                  = time ();
      $Zeitsperre                   = 86400;
      $Gefunden                     = false;
      $GueltigeIP                   = true;

$DateiIP                      = "CSV.GaestebuchIP.csv";
      $ListeIP                      = file ($DateiIP);

$Fehler                       = false;
      $FehlermeldungenTemp[]        = "";

// IP feststellen

if ($_SERVER["HTTP_X_FORWARDED_FOR"])
      {
        if ($_SERVER["HTTP_CLIENT_IP"])
          $IP = $_SERVER["HTTP_CLIENT_IP"]; // Proxy-Server
        else
          $IP = $_SERVER["REMOTE_ADDR"]; // Proxy-Server

$IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
      }
      else
      {
        if ($_SERVER["HTTP_CLIENT_IP"])
          $IP = $_SERVER["HTTP_CLIENT_IP"];
        else
          $IP = $_SERVER["REMOTE_ADDR"];
      }

// IP prüfen

$GueltigeSegmente = 0;

if (ereg('^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$', $IP, $segment))
      {
        if (($IP != "0.0.0.0") || ($IP != "255.255.255.255"))
        {
          for ($i = 1; $i < 5; $i++)
          {
            if ($segment[$i] >= 0 && $segment[$i] <= 255)
              $GueltigeSegmente += 1;
          }

if ($GueltigeSegmente != 4)
            $GueltigeIP = false;
        }
        else
          $GueltigeIP = false;
      }
      else
        $GueltigeIP = false;

// Reload prüfen

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

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

foreach ($NeueIPListe as $Zeile)
          {
            $GesplitteteZeile = explode("|", $Zeile);

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

$DateiZeiger = fopen($DateiIP, "w");

if (count ($ListeIP) > 0)
        {
          foreach ($NeueIPListe as $Zeile)
            fwrite ($DateiZeiger, trim ($Zeile) . "\n");
        }

if (!$Gefunden)
          fwrite ($DateiZeiger, $Zeitstempel . "|" . $IP . "\n");

fclose ($DateiZeiger);

... Aufbau des Menüs ...

if (!$Gefunden)
          echo '<img border="0" src="pic/nav/N_eintrag_erstellen.png" width="86" height="16">';
        else
          echo '<img border="0" src="pic/gfx/L_spacer.gif" width="86" height="1">';

... Aufbau des Menüs ...
      }
      else
        echo "Ungültige IP-Adresse";

?>
  </body>
</html>

Mein Problem ist nun aber, dass die Variable "$Gefunden" scheinbar übergangen wird, weil die Schaltfläche "Eintrag erstellen" immer angezeigt wird.

Was habe ich falsch gemacht ?

Schon mal vielen Dank im Voraus.

Gruss, Enrico