首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按国家ip范围阻止用户注册

按国家ip范围阻止用户注册
EN

Stack Overflow用户
提问于 2013-09-19 13:20:12
回答 4查看 998关注 0票数 4

我在MYSQL中有下表

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `countryip` (
`ip_from` bigint(10) unsigned NOT NULL DEFAULT '0',
`ip_to` bigint(10) unsigned NOT NULL DEFAULT '0',
`country_iso2` varchar(2) COLLATE utf8_bin NOT NULL DEFAULT '',
`country_iso3` varchar(3) COLLATE utf8_bin NOT NULL DEFAULT '',
`country_name` varchar(32) COLLATE utf8_bin NOT NULL,
KEY `ip_from` (`ip_from`,`ip_to`)) 
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

在这里,我增加了世界上所有国家的全部知识产权范围。

我想在php中创建一个脚本,将用户ip与此数据库中的ip范围进行比较,并在此之后回显一条消息。从我未完成的事情开始,我需要声明

代码语言:javascript
复制
<?php
    mysql_select_db("database_name")   or die(mysql_error());
$ip = $_SERVER['REMOTE_ADDR'];
    $query = mysql_query("SELECT `IP` FROM `ban_ip` WHERE `IP` = '$ip'"); // this works only if i have the single static ip in the dbs, but now i have the ip range
    if (mysql_num_rows($query) > 0)
    {
echo ' <!DOCTYPE html> <html> <head> <script type="text/javascript"> alert("You are not allowed to access this website"); window.location.replace("index.php"); </script> </head> <body> </body> </html>';
    }

我能做些什么来代替这个查询?

代码语言:javascript
复制
$query = mysql_query("SELECT `column` FROM `table` WHERE `column` = '$ip'");

以使用户IP与ip范围的比较成为可能。

IP从列到IP列的样子是这16777216,16777471,为了找出ip,有一个类似于ip = 256 +类B* 256 +类C* 256 * 256 +类D* 256 * 256 * 256 *256的公式。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-19 13:34:34

可以对指定的表使用以下SQL查询:

代码语言:javascript
复制
SELECT `country_iso2` FROM `countryip` WHERE `ip_from` <= inet_aton('$ip') AND ip_to >= inet_aton('$ip')

这将为您指定的IP地址选择两个字符国家ISO代码。从这里开始,简单地将ISO代码与禁用国家代码表中的条目进行比较。

票数 3
EN

Stack Overflow用户

发布于 2013-09-19 13:29:07

我知道这不是你问题的直接答案,但我最近使用了这个API;

json.php

使用JSON非常容易,也可以从服务器快速回复。它是免费的,尝试一下,可以为你的数据库节省一些存储空间。

票数 1
EN

Stack Overflow用户

发布于 2013-09-19 14:08:40

这不是问题的直接答案,但在我的经验中,自己维护IP数据库有点麻烦。

为此,我使用了MaxMind的免费GeoLite2数据库,因为它经常更新并提供相当精确的结果:

https://github.com/maxmind/GeoIP2-php

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18895796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档