2017-06-12 5 views
1

毎日悪質なヒットのために私のウェブサイトにアクセスしている国をブロックしたい。私はここでスクリプトを見つけたhttp://azuliadesigns.com/blocking-website-access-country-php/私はどこの国がウェブサイトにアクセスするのをブロックすることができます。これは初心者にとっては大丈夫です。しかしここでは、if($two_letter_country_code=="US")で1つの国のみをブロックできます。国によってPHPがウェブサイトにアクセスできないようにする

スクリプト

if ($_SERVER['HTTP_X_FORWARDED_FOR']) 
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
else 
    $ip = $_SERVER['REMOTE_ADDR']; 

$two_letter_country_code=iptocountry($ip); 

function iptocountry($ip) 
{ 
    $numbers = explode(".", $ip);  

    include("ip_files/".$numbers[0].".php"); 
    $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]);  

    foreach($ranges as $key => $value) 
    { 
    if($key<=$code) 
    { 
     if($ranges[$key][0]>=$code) 
     { 
     $country=$ranges[$key][1];break; 
     } 
    } 
    } 

    if ($country=="") 
    { 
    $country="unknown"; 
    } 

    return $country; 
} 
if ($two_letter_country_code=="US") 
    die(); 

私の質問です、私は、データベースから、ここで複数の国へのアクセスをブロックしたい場合は?私のデータベースにいくつかの国コードを保存して、US、IN、PKなどをブロックするとしたら、すべてのアクセスをブロックしたいとします。その場合、このスクリプトを変更するにはどうすればよいですか?私は動作するはずだと思う何

:今、このラインに

if (in_array($two_letter_country_code, $country_codes_to_block)) 

if ($two_letter_country_code=="US") 

を変更

$country_codes_to_block = $row['block_countries']; // Fetched from database. This will give me the country codes US,IN,PK... etc. 

が、これはコード保存与えられているすべての国へのアクセスをブロックされますデータベースに?それとも私は別のことをしなければならないのですかそして、このスクリプトは本当に便利ですか、克服する必要のある欠点はありますか?私はこれらの質問と混同しています。 ...私のexpirienceで

答えて

-1

を助けてください、それが働いているかのようにif ($two_letter_country_code=="US" || $two_letter_country_code=="UK")共通Methodeのを使用する方法についてin_array()

を用いて動作するはず?

+0

私はそれを動的に使用するように設定したいのですが、マニュアルに戻す方法を提供しています... 50カ国をブロックしたいのですが?ちょうど考えがある。私はそれを50回、私が持っている25のPHPページすべてに置くだろうか?慎重に質問を読んで、あなたがそうする前にあなたの答えの長所と短所を2回考えてください..とにかく、ここにあなたの時間を取ってくれてありがとう:) –

0
if ($_SERVER['HTTP_X_FORWARDED_FOR']) 
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
else 
    $ip = $_SERVER['REMOTE_ADDR']; 

$two_letter_country_code=iptocountry($ip); 

function iptocountry($ip) 
{ 
    $numbers = explode(".", $ip); 

    include("ip_files/".$numbers[0].".php"); 
    $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]);  

    foreach($ranges as $key => $value) 
    { 
    if($key<=$code) 
    { 
     if($ranges[$key][0]>=$code) 
     { 
     $country=$ranges[$key][1];break; 
     } 
    } 

    } 


    if ($country=="") 
    { 
    $country="unknown"; 
    } 


error_reporting(E_ERROR | E_PARSE); 

include ("mysqli_connection_file.php"); 
$query = "SELECT column_name FROM table_name"; 
$result = mysqli_query($conn, $query); 

if (!$conn) { die("No Connection was made"); } 

while($row = mysqli_fetch_assoc($result)) { 

    $ccode = $row['name']; 

} 

    foreach ($ranges as $key => $value) { 
     $countryset = $ranges[$key][1]; 
     //echo $countryset."<br />"; 

     if($ccode == $countryset) { 
      $time = date('Y-m-d H:i'); 
      $insert = "INSERT IGNORE INTO logged_table VALUES ('','$ip','$time','IP Blocked','$countryset')"; 

       if ($conn->query($insert) === TRUE) {} else { 
        echo "Error: " . $sql . "<br>" . $conn->error; 
        die; 
       } 

      mysqli_free_result($result); 
      mysqli_close($conn); 


      echo "<script>alert('Please take a moment to review a very special offer we are running before you review!')</script>"; 
      echo "<META http-equiv='refresh' content='0; URL=http://www.leapfrog.com'>"; 

     } 

    } 
} 
関連する問題