<?php /** * Определение мобильного оператора * автор: Nc_Soft * Спасибо за помощь и критику Pиpиcу * 02.03.09 */ /*-- ---------------------------- -- Table structure for oper -- Таблица операторов -- ---------------------------- CREATE TABLE `oper` ( `id_oper` tinyint(4) unsigned NOT NULL auto_increment, `oper` varchar(255) NOT NULL, PRIMARY KEY (`id_oper`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; --тут прописываем опсосов INSERT INTO `oper` VALUES ('1', 'Megafon'); INSERT INTO `oper` VALUES ('2', 'Beeline'); INSERT INTO `oper` VALUES ('3', 'Utel'); INSERT INTO `oper` VALUES ('4', 'BWC'); INSERT INTO `oper` VALUES ('5', 'MTS'); INSERT INTO `oper` VALUES ('6', 'TELE2'); --итд -- ---------------------------- -- Table structure for ip -- Таблица ip адресов -- ---------------------------- CREATE TABLE `ip` ( `id` int(10) unsigned NOT NULL auto_increment, `id_oper` tinyint(4) unsigned NOT NULL, `astart` int(11) unsigned NOT NULL, `aend` int(11) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `astart_aend` (`astart`,`aend`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; --диаппазоны (для примера вбито 7 диаппазонов мегафона) INSERT INTO `ip` VALUES ('', '1', '1402275840', '1402276863'); INSERT INTO `ip` VALUES ('', '1', '1402273792', '1402275839'); INSERT INTO `ip` VALUES ('', '1', '1402277888', '1402278911'); INSERT INTO `ip` VALUES ('', '1', '1402279936', '1402280959'); INSERT INTO `ip` VALUES ('', '1', '1402281984', '1402283007'); INSERT INTO `ip` VALUES ('', '1', '1402284032', '1402285055'); INSERT INTO `ip` VALUES ('', '1', '1402286080', '1402287103'); --итд */ //теперь представим, что зашел человек с ip=83.149.16.32 //определим его оператора $q=mysql_query("SELECT o.id_oper, o.oper FROM ip i LEFT JOIN oper o ON i.id_oper=o.id_oper WHERE INET_ATON('83.149.16.32') BETWEEN i.astart AND i.aend LIMIT 1 "); $q=mysql_fetch_row($q); //посмотрим что получилось print_r($q); ?>