2016-05-23 17 views
0

Ich habe eine Textdatei, die IP-Adressen des Benutzers protokolliert, und ich versuche, jede vorhandene Adresse mit der IP-Adresse eines Besuchers zu vergleichen, um zu sehen, ob sie übereinstimmen.Wie Zeilen einer Textdatei mit einer Variablen zu vergleichen

Wenn sie nicht übereinstimmen, möchte ich, dass die IP-Adresse des Benutzers in die Textdatei geschrieben wird - sonst möchte ich nichts in die Textdatei schreiben.

Im Moment werden alle IP-Adressen in die Textdatei geschrieben, auch wenn sie übereinstimmen. Jede Hilfe wird geschätzt, danke im Voraus.

<?php 
$ip = $_SERVER['REMOTE_ADDR']; 
$ipFile = 'ip.txt'; 
$openip = fopen($ipFile, 'r'); 
$exists = false; 

while(!feof($openip)) 
{ 
    $existingip = fgets($openip); 

    if($existingip == $ip) { 
     echo "Your ip already exists <br>"; 
     $exists = true; 
    } 
} 
fclose($openip); 

if($exists == false) { 
    $openip = fopen($ipFile, 'a'); 
    fwrite($openip, $ip . "\r\n"); 
    echo "Your IP has been logged <br>"; 
    fclose($openip); 
} 
else { 
    echo "Your IP is already stored <br>"; 
} 
?> 
+1

Warum nicht eine Datenbank verwenden? ein 'INSERT IGNORE' wäre viel einfacher. – DocRattie

Antwort

1

Ihren Code raedable machen:

$file = file($ipFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
if (in_array($ip, $file)) 
     echo "Your ip already exists <br>"; 
else { 
    $openip = fopen($ipFile, 'a'); 
    fwrite($openip, $ip . "\r\n"); 
    echo "Your IP has been logged <br>"; 
    fclose($openip); 
} 
+0

Vielen Dank, das hat mein Problem behoben. – Jack

+0

froh zu helfen. Viel Glück! – splash58

0
$ip = $_SERVER['REMOTE_ADDR']; 
$ipFile = 'ip.txt'; 
If(preg_match_all("/".preg_quote($ip)."/", file_get_contents($ipFile)){ 
     Echo "Your IP is already stored <br>"; 
}else{ 
     //append file as you do now 
} 
1

können Sie versuchen, die Datei in ein Array zu lesen:

$arrayIpFile = file($ipFile); 

if(in_array($ip, $arrayIpFile)){ 
    //Exist 
}else{ 
// not exists 
} 
+0

Danke auch, Splash kam hier kurz vor dir, deshalb gab ich ihm die Zecke. – Jack

Verwandte Themen