[英]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()返回一個資源。 使用此頁面上的示例:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.