ip vergleich mit inhalt von textdatei

srpcool

Grünschnabel
Hi,
folgender Code soll IPs aus einer Textdatei auslesen () und wenn sie mit der IP des aktuellen Benutzers übereinstimmt in eine Schleife springen ( nicht).
Findet vielleicht jemand den Fehler?
PHP:
<?php
$z = 0;
$ih = array();
$ip=getenv("REMOTE_ADDR");
echo "$ip <br><br>";
$fp = fopen("datei.txt","r");
flock($fp,2);
if ($fp)  {
   while (!feof($fp))  {	
   $ih[$z] = fgets($fp, 100);
   echo "$ih[$z] <br>"; 
      if ($ih[$z] == $ip)  {	//HIER ist das Problem		
      echo "Treffer";
      flock($fp,3);					
      fclose($fp);
      }
   $z = $z + 1;
      }
fclose($fp);
}
else {echo "Datei wurde nicht gefunden";}
?>

Das Script funktioniert bis auf diesen Vergleich. In der Textdatei müssen die IPs untereinander stehen, ohne Leerzeichen am Ende o.ä.
Getestet hab ich es auf einem lokalen Apache 1.3.x Server. Durch getenv("REMOTE_ADDR"); bekam ich as meine IP die 127.0.0.1 geliefert. Diese in die Textdatei kopieren hat leider nicht dazu geführt, dass das Script in die Abzweigung gegangen ist.
 

melmager

Erfahrenes Mitglied
liegt warscheinlich daran das die Function fgets auch das Zeichen
-CR- am Zeilenende mit einliest und somit ist es nicht gleich
der Remote_addr.

$ip=getenv("REMOTE_ADDR")."\n";
.....
if ($ih[$z] == $ip)

versuch mal die Version
 

hohoho

Mitglied
das ganze kannst du auch etwas einfacher haben :D
PHP:
<?
$ip = getenv("REMOTE_ADDR");
$ih = file("datei.txt");
if($ih) {
  if(in_array($ip, $ih)) {
    echo "Treffer!":
  }
} else {
  echo "Datei wurde nicht gefunden";
}
?>