-5

私はこのサイトを初めて使用します。ウェブサイトから特定の IP をブロックするスクリプトをコーディングしています。つまり、すべてが列の最初の IP で機能します。たとえば、データベースは次のようになります。

http://gyazo.com/290bc2b9ef77d5b985ddd675ba0c08d1

次に、最初の IP のみ、この場合は 86.70. *。禁止されたページにリダイレクトされます。誰かが私のphpスクリプトを機能させるのを手伝ってくれるなら:

<?php 
mysql_connect("localhost", "root", "password") or die(mysql_error());  
mysql_select_db("bans") or die(mysql_error());  
$query = mysql_query("SELECT * FROM `database`"); 
$row = mysql_fetch_array($query); 
$ip = $_SERVER['REMOTE_ADDR']; //Gets the users IP adress

$deny = array( $row[ip]); 
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
   header("Location: http://gabbo.org.uk/banned.php"); //What page shall the bans be sent to?
   exit(); 
}?>

私は非常に感謝されます!E.ロジエ

4

3 に答える 3

3

ロジックの小さな変更。

<?php 
    mysql_connect("localhost", "root", "password") or die(mysql_error());  
    mysql_select_db("bans") or die(mysql_error());
    $ip = $_SERVER['REMOTE_ADDR'];

    # Full Text Attempt
    $query = mysql_query("SELECT `IP` FROM `database` WHERE `IP` = '$ip'");
    # Wild Card Attempt
    $query = mysql_query("SELECT `IP` FROM `database` WHERE `IP` LIKE '%$ip%'");
    # Use any one query from the above!

    if (mysql_num_rows($query) > 0)
    {
        header("Location: http://gabbo.org.uk/banned.php");
        die();
    }
?>

働く

IPアドレスがのユーザーが192.168.1.1あなたのページにアクセスしようとし、MySQLの禁止リストがそれを持っている場合、それは確かにいくつかの行を返します。これは。より大きいです1。そうすれば、ヘッダーは301 Permanent Redirectionブラウザに禁止されたページを提供します。

于 2012-09-17T17:48:05.243 に答える
0

最初の部分は問題ありませんが、拒否リストは次のように計算する必要があります

$deny = array()
while ($row = mysql_fetch_array($query)) {
 $deny[] = $row['ip'];
}

... if(in_array)から続行できるよりも

他の人も正しいです。すべてを取得してphpで処理するのではなく、データベースに存在を問い合わせる必要があります。

そして非常に強力な提案:代わりにPDOを使用してください!

于 2012-09-17T17:47:59.470 に答える
0

クエリに IP ルックアップを入れる必要があります。

$ip = $_SERVER['REMOTE_ADDR']; //Gets the users IP adress

mysql_connect("localhost", "root", "password") or die(mysql_error());  
mysql_select_db("bans") or die(mysql_error());  
$query = mysql_query("SELECT * FROM `database` WHERE ip='$ip'"); 
$row = mysql_fetch_array($query); 

if ($row) {
   //What page shall the bans be sent to?
   header("Location: http://gabbo.org.uk/banned.php"); 
   exit(); 
}
于 2012-09-17T17:51:07.003 に答える