Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Получение по номеру телефона его местонахождения (страны и города) с использованием Ajax
Номер телефона:
+
По мере набора номера будет отображаться доступная информация об абоненте.
Не вводите цифру 8 в начале номера, которая используется для выхода на межгород.
База содержит информацию о стационарных и мобильных телефонах. Вы получаете оператора и регион по номеру мобильного телефона. Купить базу можно здесь. Описание API здесь.
Здесь будет результат
Система использует общую базу с примером определения города по ip и выбора страна, регион, город.
Исходный код примера:
<?
/* Определение страна, регион, город по номеру телефона с использованием технологии Ajax
Взято http://htmlweb.ru/ajax/example/telcod.php
Разрешается использование в любых своих разработках.
Размешение кода в открытом доступе разрешается только с сохранением активной ссылки на источник.
Все остальные права принадлежат Колесникову Дмитрию Геннадьевичу.
База доступна платно, по запросу WMID 467585298788 или E-Mail kdg@htmlweb.ru.
Структура базы описана в http://htmlweb.ru/ajax/example/region.php
*/
// открытие базы, аналогично примеру region.php
require_once($_SERVER['DOCUMENT_ROOT'].'/config.php');
define("db_prefix","geo_");
// общие функции с примером region.php
include_once($_SERVER['DOCUMENT_ROOT'].'/ajax/example/region.inc');
if(!isset($_GET['telcod'])){}
elseif(empty($_GET['telcod'])) die('пусто');
else{
$telcod=addslashes(preg_replace('/[^\d]/','',urldecode($_GET['telcod'])));
$res = sql('SELECT * FROM '.db_prefix.'country WHERE INSTR("'.$telcod.'",telcod)=1 and LENGTH(telcod)>0');
while($row = mysqli_fetch_array($res)) { // Казахстан и Россия имеют один код страны
$country = intval($row['id']);
$city = substr($telcod, strlen($row['telcod'])); // оставшаяся часть номера телефона
echo '+<b>' . $row['telcod'] . '</b> страна: ' . $row['name'] . ' (' . $country . ')<br>';
if (strlen($city) < 3) continue;
// код города может быть 3,4 или 5 символов
// т.к. в базе у одного города кодов может быть несколько, введенных через запятую,
// то использовать простейшее сравнение невозможно. Приходиться "извращаться".
if (strlen($city) > 4) $res1 = sql('SELECT * FROM ' . db_prefix . 'city WHERE country="' . $country . '" and
LOCATE(",' . substr($city, 0, 5) . ',", CONCAT(",",telcod,","))>0 and LENGTH(telcod)>0');
if (strlen($city) > 3 && (!isset($res1) || mysqli_num_rows($res1) == 0)) $res1 = sql('SELECT * FROM ' . db_prefix . 'city WHERE country="' . $country . '" and
LOCATE(",' . substr($city, 0, 4) . ',", CONCAT(",",telcod,","))>0 and LENGTH(telcod)>0');
if (!isset($res1) || mysqli_num_rows($res1) == 0) $res1 = sql('SELECT * FROM ' . db_prefix . 'city WHERE country="' . $country . '" and
LOCATE(",' . substr($city, 0, 3) . ',", CONCAT(",",telcod,","))>0 and LENGTH(telcod)>0');
while ($row1 = mysqli_fetch_array($res1)) {
$city = intval($row1['id']);
$region = intval($row1['area']);
echo 'country=(' . $country . ') ' . $row['name'] . ', область=' . $region . ', город=' . $city . '<br>';
}
if (mysqli_num_rows($res1) > 1) die; // пока однозначности в выборе города нет
}
if(substr($telcod,0,2)=='79'){ // если это сотовый оператор
$res1 = sql('SELECT * FROM ' . db_prefix . 'telcod WHERE ' . str_pad($telcod, 10, '0') . ' BETWEEN deffrom and defto');
while ($row1 = mysqli_fetch_array($res1)) {
$city = GetName('city', intval($row1['city']));
$region = GetName('area', intval($row1['okrug']));
$oper = GetName('oper', intval($row1['oper']));
echo "<div style='border: #C5D3DC 1px solid; padding: 10px; width: 97%;'>\n";
if ($city) echo "Город: <b>" . $city . "</b> <a href='http://ru.wikipedia.org/wiki/" . $city . "' target=_blank>Wiki</a><br />\n";
echo "Регион: <b>" . $region . "</b> <a href='http://ru.wikipedia.org/wiki/" . $region . "' target=_blank>Wiki</a><br />
Мобильный оператор: <b>" . $oper . "</b><br />
</div>";
}
}
die;
}
function GetName($tbl, $id){
$query=sql('SELECT name FROM '.db_prefix.$tbl.' WHERE id="'.$id.'" LIMIT 1');
if ($data = mysqli_fetch_assoc($query)) return $data['name'];
return '';
}
?>
<h1>Получение по номеру телефона страны и города с использованием Ajax</h1>
<label>Начальные цифры номера телефона:
+<input value='7495' size=10 onkeyup='Load(this)' /></label><br />
не вводите цифру 8 в начале номера, которая используется для выхода на межгород.
<script>
<!--
var ot="";
function Load(t){
if(ot==t.value||t.value=="")return; // если ничего не изменилось не "замучить" сервер
ajaxLoad('info', '/ajax/example/telcod.php?telcod='+t.value, 'загрузка...','','');
ot=t.value;
}
//-->
</script>
<br /><br />
<div id="info">
</div>
Более сложный вариант скрипта с задержкой на 1 секунду после последнего нажатия клавиши:
var ot="", timer=0;
function Load(t){
if(ot==t.value||t.value=="")return; // если ничего не изменилось не "замучить" сервер
ot=t.value;
if(timer)clearTimeout(timer);
timer=window.setTimeout('Load2()',1000); // загружаю через 1 секунду после последнего нажатия клавиши
}
function Load2(){
ajaxLoad('info', '/ajax/example/telcod.php?telcod='+ot, 'загрузка...','','');
timer=0;
}
Дополнительные таблицы, которые нужны этому примеру для определения местонахождения мобильного телефона по номеру мобильного:
lt;?
// список телефонных кодов
// если city пустой, то код для всего региона
sql('CREATE TABLE IF NOT EXISTS '.db_prefix.'telcod (
country CHAR(2) NOT NULL,
okrug VARCHAR(64) NOT NULL,
city INT UNSIGNED NOT NULL,
oper INT UNSIGNED NOT NULL,
deffrom varchar(11) NOT NULL UNIQUE,
defto varchar(10) NOT NULL,
) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');
// список операторов
sql('CREATE TABLE IF NOT EXISTS '.db_prefix.'oper (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(64) UNIQUE NOT NULL,
mobile TINYINT NOT NULL DEFAULT 0,
`mnc` INT( 3 ) UNSIGNED NOT NULL DEFAULT 0,
`brand` VARCHAR(64) NOT NULL DEFAULT "",
PRIMARY KEY (id)
) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');
?>
Заполненная база данных со всеми таблицами доступна платно.
Вас заинтересует:
- Бесплатное приложение для отслеживания местонахождения.
- Информация о перенесенных телефонных номерах
- API получения местонахождения по номеру телефона: страны и города
.
Прокомментировать/Отблагодарить