Реклама - здесь может быть Ваша реклама, которую увидят 4000+ человек в сутки. Хотите 1000 посетителей на свой сайт за 50 копеек?
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Получение по номеру телефона его местонахождения (страны и города) с использованием Ajax

Номер телефона: +
По мере набора номера будет отображаться доступная информация об абоненте.
Не вводите цифру 8 в начале номера, которая используется для выхода на межгород.

База содержит информацию о стационарных и мобильных телефонах. Вы получаете оператора и регион по номеру мобильного телефона.



Система использует общую базу с примером определения города по ip и выбора страна, регион, город.

Исходный код примера:

<?php
/* Определение страна, регион, город по номеру телефона с использованием технологии 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($_GET['telcod']);
   
$res sql('SELECT * FROM '.db_prefix.'country WHERE INSTR("'.$telcod.'",telcod)=1 and LENGTH(telcod)>0');
   while(
$row mysql_fetch_array($res)){ // Казахстан и Россия имеют один код страны
    
$country=intval($row['id']);
    
$city=substr($telcodstrlen($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)>&& (!isset($res1) || mysql_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) || mysql_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 mysql_fetch_array($res1)){
       
$city=intval($row1['id']);
       
$region=intval($row1['area']);
       echo 
'country=('.$country.') '.$row['name'].', область='.$region.', город='.$city.'<br>';
       }
    if(
mysql_num_rows($res1)>1)die;    // пока однозначности в выборе города нет
        
}
    if(
substr($telcod,0,2)=='79'){ // если это сотовый оператор
       
$res1 sql('SELECT * FROM '.db_prefix.'telcod WHERE def="'.substr($city,0,3).'" and '.intval(str_pad(substr($city,3),7,'0')).' BETWEEN deffrom and defto');
       while(
$row1 mysql_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 mysql_fetch_assoc($query)) return $data['name'];
   return 
'';
}
?>

<h1>Получение по номеру телефона страны и города с использованием Ajax</h1>
Начальные цифры номера телефона:
+<input value='7495' size=10 onkeyup='Load(this)' /><br />
не вводите цифру 8 в начале номера, которая используется для выхода на межгород.

<script LANGUAGE="JavaScript">
<!--
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;
}

Дополнительные таблицы, которые нужны этому примеру для определения местонахождения мобильного телефона по номеру мобильного:

// список телефонных кодов
// если city пустой, то код для всего региона
sql('CREATE TABLE IF NOT EXISTS '.db_prefix.'telcod (
		id INT UNSIGNED NOT NULL AUTO_INCREMENT,
		okrug VARCHAR(64) NOT NULL,
		city INT UNSIGNED NOT NULL,
		oper INT UNSIGNED NOT NULL,
		def CHAR(3) NOT NULL,
		deffrom INT UNSIGNED NOT NULL,
		defto INT UNSIGNED NOT NULL,
		PRIMARY KEY (id),
		UNIQUE (def, deffrom)
 		) 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, 
		PRIMARY KEY (id)
		) DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin');

Заполненная база данных со всеми таблицами доступна платно.

Основу в читать про пакеты с петлевой ручкой виде металлического стержня.
Мебельная фабрика Софт-мебель: хорошие диваны по низким ценам
Скачать шаблоны DLE бесплатно

© Copyright 2008-2012 by KDG