Enrico: Einfacher Reloadschutz auf Textbasis greift nicht

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

  1. Holladiewaldfee,

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

    Ich habe Deinen Code nicht komplett durchgeschaut, aber hast Du schonmal überprüft, ob der Interpreter überhaupt bis zu der Stelle kommt, an der $Gefunden = true gesetzt wird? Laß Dir doch an der entsprechenden Stelle einfach mal eine Meldung ausgeben, z.B. "Jetzt true" oder sowas. Kommt die Meldung nicht wie erwartet, gehe eine Ebene höher und probiere es da mit einer Meldung usw., bis Du die fehlerhafte Ebene findest.

    Auf Gut-Neu-Deutsch: Debugging :)

    Ciao,

    Harry

    --
      Bald kommt die Waldfee ... (Projektphase: Planung)
      Bis dahin:
      http://harry.ilo.de/projekte/berge/