簡體   English   中英

PHP和MySQL IP Ban系統問題

[英]PHP and MySQL IP Ban system Problems

我目前正在嘗試用PHP和MYSQL創建IP-BAN系統,但是我對MySQL語法不是很熟悉。 到目前為止,這是我的代碼,它返回最后一個“ uh-oh”。 碼:

<?php

    $ip = '127.0.0.1';

    mysql_connect('127.0.0.1', 'user', 'pass');
    mysql_select_db('IP');

    if(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == 1){
        echo "If you get this, it may or may not be working";
    }
    elseif(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == FALSE){
        echo "If you get this, it means that your IP was not found in the database";
    }
    else{
        echo "Uh-oh!";
    }

我的SQL數據庫名稱是IP,表名稱是IP,字段是IP和ban。

如何使此代碼告訴我表中是否包含給定的IP?

如果查詢因語法錯誤而失敗, mysql_query()將返回FALSE ,但是如果找不到該值,它將不返回FALSE 而是,這兩種情況都將返回結果資源。 您必須檢查mysql_num_rows()的值以查明是否返回了一行。

// Do the query and test for errors:
$result = mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'");
if (!$result ) {
  // Query error
  echo mysql_error();
}
// Query was successful - test if any rows were found
else {
  if (mysql_num_rows($result) > 0) {
     //the IP was found
  }
  else {
     // the IP was NOT found (num rows === 0)
  }
}

免責聲明:

現在,關於IP禁止的做法...通常不建議這樣做。 學校或企業網絡,或ISP背后的NAT中的任何人(就像許多移動網絡一樣)在許多用戶(甚至數千個)之間共享一個公共IP。 您無法通過IP地址可靠地識別單個用戶,更糟的是,您有阻止合法用戶使用Web應用程序的風險。

最后,關於mysql_*()函數本身。PHP開發社區已經開始計划棄用這些舊函數,因為它們不會很好地鼓勵安全的編碼實踐。 相反,我(以及這​​里的大多數其他人)建議您使用准備好的語句來熟悉現代的API。 我更喜歡PDO ,但是MySQLi也是一個選擇。

如果成功,mysql_query()返回一個資源。 使用此頁面上的示例:

http://us.php.net/manual/zh/mysqli.query.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM