2016-05-23 4 views
0

私はユーザーのIPアドレスを記録するテキストファイルを持っており、既存の各アドレスと訪問者のIPアドレスを比較しようとしています。テキストファイルの行を変数と比較する方法

一致しない場合は、ユーザーのIPアドレスをテキストファイルに書き込む必要があります。そうしないと、テキストファイルに何も書き込まれません。

現在、すべてのIPアドレスが一致してもテキストファイルに書き込まれています。どんな助けもありがとうございます。事前に感謝します。

<?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

データベースを使用しないのはなぜ? INSERT IGNOREははるかに簡単です。 – DocRattie

答えて

1

コードをよりraedableます

$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

ありがとう、これは私の問題を修正しました。 – Jack

+0

お手伝いします。がんばろう! – 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

あなたは配列にファイルを読み取ろうとすることができます

$arrayIpFile = file($ipFile); 

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

ありがとう、また、あなたの前にちょうど来たので、私は彼にチックを与えたのです。 – Jack

関連する問題