Hostname Sperre geht nicht

weightwatcher

Erfahrenes Mitglied
Kann mir jemand helfen ... checks echt nimma.
PHP:
<?php
$fp = fopen("$file","r"); // Datei öffnen 
if ($fp) 
{ 
    while(!feof($fp))//Solange bis der Dateizeiger am Ende der Datei ist 
    { 
       $zeile = fgets($fp,100);//Einlesem der Zeilen 
       { 
    $ip = explode(",",$zeile); 
    } 
if($ip[0] == gethostbyaddr($ip)){ 
echo "Dein Hostname wurde gesperrt vom Betreiber. Bitte setzen Sie <br>sich mit 
Ihrem Provider in Verbindung!";
} 
else echo "Zugriff geloggt...";
{ 

fclose($fp); // Datei schließen 
}

echo "Speichere IP/Hostname mit Datum und Zugriffszeit";
{
$ip = $_SERVER['REMOTE_ADDR'];
  $host = gethostbyaddr($ip);
  $file = "iplist.txt";
  $date = date('H:m:s');
  $time = time();
  $fp = fopen("$file", 'a+');
  fputs($fp, $time.' '.$date.' '.$ip.' '.$host."\n");
  fclose($fp);
}
echo "Daten erfolgreich gespeichert!";
?>

Er Bringt immer
Code:
Parse error: parse error in /srv/www/htdocs/web1/html/ip.php on line 33
Weiß jemand RAT ?
MfG weightwatcher und Danke im Voraus ....
 
Wo kommt den die geschwungene Klammer vor
Code:
$ip = $_SERVER['REMOTE_ADDR'];
her?

[edit]
Code:
<?php
if ()
{
    while()
    {
       {
    }
if(){
}
{
}
{

}
?>

Das du da nicht mehr durchblickst kann ich nachvollziehen. Das da oben ist die Struktur des Codes (ich hab alle Anweisungen rausgelöscht).
 
Zuletzt bearbeitet von einem Moderator:
Also, erstmal, wenn du fürs Forum Kommentare einfügst, versuch zu erreichen, dass sie die Struktur des Codes nicht zerstören.

Und jetzt

1.
PHP:
if ($fp)
{
    while(!feof($fp))//Solange bis der Dateizeiger am Ende der Datei ist
    {
       $zeile = fgets($fp,100);//Einlesem der Zeilen
       {
    $ip = explode(",",$zeile);
    }
Du speicherst jede Zeile immer neu in der variablen "$zeile", ohne diese vorher auszuwerten. Und da "$ip = explode(",",$zeile);" und die if-IP-Abfrage nicht innerhalb der while-Klammer stehen, prüfst du immer nur mit der letzten Zeile aus dem File. Kann sein, dass du das so gewollt hast, glaube ich aber nicht ^^

2.
PHP:
else echo "Zugriff geloggt...";
{

fclose($fp); // Datei schließen
}
Was für einen Sinn hat die geschweifte Klammer hier? Hast du da etwas herausgelöscht? Die if-Funktion ist schon geschlossen, und die while-Funktiona uch, aber du öffnest einfach eine geschweifte Klammer, warum Das kann sehr gut deinen Fheler verursachen!

3.
PHP:
echo "Speichere IP/Hostname mit Datum und Zugriffszeit";
{
 ...
}
echo "Daten erfolgreich gespeichert!";
Dasselbe wie obendrüber... warum die eckige Klammer?

Wenn ich Recht habe, sollte dein Script so aussehen (und funktionieren):
PHP:
<?php
$fp = fopen("$file","r"); // Datei öffnen
if ($fp) {
   while(!feof($fp)) {
      // In dieser while-Schleife werden die einzelnen Zeilen ausgelesen und jeweils sofort auf Fehler untersucht.
      $zeile = fgets($fp,100);
      $ip = explode(",",$zeile);
      if($ip[0] == gethostbyaddr($ip)){
         echo "Dein Hostname wurde gesperrt vom Betreiber. Bitte setzen Sie <br>sich mit Ihrem Provider in Verbindung!";
      }
      else echo "Zugriff geloggt...";
   }
   fclose($fp); // Datei schließen
}

echo "Speichere IP/Hostname mit Datum und Zugriffszeit";
{
$ip = $_SERVER['REMOTE_ADDR'];
  $host = gethostbyaddr($ip);
  $file = "iplist.txt";
  $date = date('H:m:s');
  $time = time();
  $fp = fopen("$file", 'a+');
  fputs($fp, $time.' '.$date.' '.$ip.' '.$host."\n");
  fclose($fp);
}
echo "Daten erfolgreich gespeichert!";
?>
Wenn du nicht für jede Zeile eine "zugriff geloggt..." -Ausgabe haben willst, musst du die Zeile mit "$zeile[] = fgets(...);" in einem Array speichern, und dieses nach der while-Schleife mit einer anderen Schleife auf gesperrt IPs überprüfen lassen.

Greez
loli

PS: Hoffe, es hat was gebracht.
 
ja hast ^^ Recht. Die { kommen da nicht hin... Sorry.
Werde mal schauen ob dein Script so funktioniert... Danke schon mal im Voraus...
MfG weightwatcher aka Dennis Gack...
 
Zurück