Bases de Datos

Ξ 17 comentarios

Cómo crear un identificador de teléfonos móviles

por Xabadu
Cómo crear un identificador de teléfonos móviles

¿Cuántas veces nos hemos encontrado con la siguiente situación?:

Nuestro plan de telefonía móvil nos entrega X cantidad de minutos a la Compañía 1, Y cantidad de minutos a la Compañía 2 y Z cantidad de minutos a la compañía 3. Agotamos una de las opciones y necesitamos hacer una llamada urgente, pero empezamos a pensar ¿Y si es de los minutos que ya no me quedan? Me cobrarán extra o no podré hacer la llamada. Y ante la duda, una oportunidad pasa.

Hoy en Internet es posible encontrar algunas aplicaciones que nos permiten reconocer la compañía a la que pertenece un número móvil. Sin embargo,  algunas de ellas presentan requisitos específicos o son de licencia comercial, lo que no las hace accesibles para cualquier persona.

Pero que no panda el cúnico amigos nuestros, que hoy en CLH, mediante un realmente simple y rápido tutorial (siempre lo decimos, pero este en verdad es muy simple), les enseñaremos a construir un identificador de teléfonos móviles de forma gratuita y en la comodidad de su hogar.

¿Qué hacer? Solo seguirnos después del salto 🙂

Cómo crear un identificador de teléfonos móviles

Detalles del tutorial

  • Tiempo aproximado de implementación: 30 minutos.
  • Dificultad: Básico.

toolsImplementos necesarios:

  • Un servidor Web que ejecute archivos PHP y un sistema de gestión de bases de datos MySQL (Recomendamos XAMPP).
  • La base de numeración telefónica móvil publicada por la Subtel. Pueden descargarla en formato PDF desde el siguiente enlace.
  • Un editor para la codificación (Recomendamos Notepad++).

Notas sobre el proceso:

Probablemente en este punto se preguntarán: ¿Cómo funciona esto? Bastante sencillo. La Subsecretaría de Telecomunicaciones en Chile define una serie de prefijos los cuales son asignados en rangos a las distintas compañías que entregan servicios de telefonía móvil. Estos prefijos están compuestos por 4 dígitos y van desde el 6200 hasta el 9999.

Ahora, ¿qué tienen que ver estos prefijos? Son ellos los que forman la primera mitad de nuestros números de teléfonos móviles. En consecuencia, cada prefijo tiene 4 dígitos más que forman un número único completo. Si nuestras matemáticas no fallan, podemos deducir que eso significa que existe un total de 9999 números de teléfonos móviles únicos por cada prefijo. Considerando que son 3799 prefijos en total, en Chile tenemos 37.986.201 posibles combinaciones de números.

¿Eso significa que eventualmente habrán 37 millones de celulares dando vuelta en el país?. Puede ser, pero de momento no, ya que como podrán fijarse en la base de numeración, hay prefijos asignados a compañías que actualmente no ofrecen servicios de telefonía móvil de libre acceso al público general… pero nunca se sabe. Adicionalmente, hay algunos rangos de prefijos que no están asignados, lo que deja un total 2620 prefijos y por ende 26.197.380 combinaciones. Pero eso es un dato anecdótico más que nada.

Con esa información, ya tenemos la lógica clara para realizar nuestra aplicación, así que manos a la obra.

Procedimiento:

1.- Lo primero que debemos hacer, y que es el paso más crítico, es transformar la base de numeración telefónica a un formato adecuado, ya que la que descargamos esta en formato PDF y no podremos acceder a ella de forma normal, así que nuestro objetivo es traspasarla a nuestra base de datos MySQL con el fin de poder consultarla mediante el script que desarrollaremos.

Para esto tenemos varias opciones:

  • Podemos copiar el contenido de la base y traspasarlo a una planilla Excel, en la cual debemos eliminar las XXXX que aparecen en el campo suscriptor y solo mantener el prefijo y en otra columna la compañía a la que pertenece ese prefijo. Adicionalmente, es bueno que al menos para las tres compañías más conocidas, cambiemos sus nombres completos o razones sociales a nombres más amigables y reconocibles para el usuario (por ej. ENTEL PCS TELECOMUNICACIONES S.A. a ENTEL PCS).
  • Una vez que tenemos nuestro Excel armado con el formato que queremos, lo traspasamos a MySQL. ¿Dudas sobre como hacerlo? No se preocupen, en el pasado hemos hecho un tutorial que cubre el proceso de forma completa.

Pero, equipo de CLH, este proceso es largo y tedioso, ¿pueden echarnos una mano por favor?. Bueno, bueno, pero solo porque lo pidieron por favor. Si hacen click en este enlace, pueden descargar la base de datos completa lista para importar a MySQL. Pero no le cuenten a nadie, ¿ya?.

El archivo que les dejamos es un fiel reflejo de la base de datos que creamos, llamada moviles, la cual tiene una tabla llamada numeracion. Esta a su vez tiene 2 campos: prefijo (INT) y empresa (TEXT). Más sencillo imposible.

2.- Ahora que hemos ordenado nuestros datos, podemos empezar a codificar lo que será nuestra pequeña aplicación. Para empezar, haremos un formulario el cual contendrá un campo de texto para que el usuario ingrese el número de teléfono móvil a consultar y un botón para enviar la consulta. Para esto, crearemos un archivo en formato PHP, llamado consulta.php, el cual contendrá además de lo anterior, un autollamado donde se ejecutará el script y consultaremos la base de datos. Pero primero, el formulario:

<div id="formulario">
 <form name="formulario-consulta" id="formulario-consulta" action="consulta.php" method="post">
 <label for="numero">Ingrese el n&uacute;mero a consultar:</label>
 <input type="text" name="numero" id="numero" />
 <p><input type="submit" id="submit" name="submit"
value="Consultar n&uacute;mero" />
 </form>
</div>

3.- Luego de codificar nuestro formulario, procedemos a hacer el código PHP, el cual validará el número ingresado y luego hará cortará los primeros 4 caracteres de la cadena ingresada (para igualarlo al prefijo), hará la consulta en la base de datos y desplegará el resultado de acuerdo a lo que se obtenga:

if($_POST) {

 if($_POST['numero'] == '') {

     $mensaje = "<span id='error'>Debe ingresar un n&uacute;mero para
     consultar.</span>";

 }
 else {

          if(!$conexion = mysqli_connect("localhost", "usuario", "clave", "bd")) {

              $mensaje = "<span id='error'>No se pudo conectar
              a la base de datos.</span>";

          }
          else {

                     $numero = substr(trim($_POST['numero']), 0, 4);

                     $consulta = "SELECT empresa FROM numeracion WHERE prefijo = ".$numero;

                     if($resultado = mysqli_query($conexion, $consulta)) {

                           if(mysqli_num_rows($resultado) == 0) {

                               $mensaje = "<span id='error'>No hay coincidencias para el
                               n&uacute;mero ".$_POST['numero'].".</span>";

                           }
                           else {

                               $datos = mysqli_fetch_array($resultado, MYSQL_ASSOC);

                               $mensaje = "<span id='exito'>El n&uacute;mero ".$_POST['numero']."
                               pertenece a ".$datos['empresa']."</span>";

                           }

                     }
                     else {

                         $mensaje = "<span id='error'>Ocurri&oacute; un error al ejecutar
                         la consulta. Int&eacute;ntelo nuevamente.</span>";

                      }

       }

    }

 }

4.- El código en si es bastante autoexplicativo. Comprobamos primero si se enviaron datos, conectamos a la base de datos y ejecutamos la consulta. En cada paso creamos una variable llamada mensaje, la cual almacena información correspondiente al resultado de la operación. Este mensaje lo añadiremos al final del formulario para que le informe al usuario que sucedió:

<div id="mensaje"><?php 

       if(isset($mensaje)) {

          echo $mensaje;

        }

 ?></div>

5.- De forma opcional, si así lo deseamos, podemos estilizar un poco esta pequeña aplicación, creando un archivo estilos.css y añadiéndolo a la cabecera de consulta.php:

#formulario {

 width: 450px;
 margin: 0 auto;
 font-family: Arial;
 font-size: 11px;
 border: solid 1px black;
 padding: 20px;
 background-color: #fac519;

}

#formulario-consulta {

 margin-left: 150px;

}

#submit {

 font-family: inherit;
 font-size: 11px;

}

label {
 display: block;
}

#mensaje {

 font-family: Arial;
 font-size: 11px;
 padding: 3px;
 border: 1px dashed black;

}

#exito {

 background-color: #6ad11b;

}

#error {

 background-color: #f51414;

}

6.- Finalmente, nuestro consulta.php quedaría de la siguiente forma:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <link rel="stylesheet" href="estilos.css" />
 <title>Identificador de tel&eacute;fonos m&oacute;viles</title>
 </head>
 <body>
 <?php
 if($_POST) {

 if(empty($_POST['numero'])) {

 $mensaje = "<span id='error'>Debe ingresar un n&uacute;mero para consultar.</span>";

 }
 else {

 if(!$conexion = mysqli_connect("localhost", "root", "dumbass", "movil")){

 $mensaje = "<span id='error'>No se pudo conectar a la base de datos.</span>";

 }
 else {

 $numero = substr(trim($_POST['numero']), 0, 4);

 $consulta = "SELECT empresa FROM numeracion WHERE prefijo = ".$numero;

 if($resultado = mysqli_query($conexion, $consulta)) {

 if(mysqli_num_rows($resultado) == 0) {

 $mensaje = "<span id='error'>No hay coincidencias para el n&uacute;mero ".$_POST['numero'].".</span>";

 }
 else {

 $datos = mysqli_fetch_array($resultado, MYSQL_ASSOC);

 $mensaje = "<span id='exito'>El n&uacute;mero ".$_POST['numero']." pertenece a ".$datos['empresa']."</span>";

 }

 }
 else {

 $mensaje = "<span id='error'>Ocurri&oacute; un error al ejecutar la consulta. Int&eacute;ntelo nuevamente.</span>";

 }

 }

 }

 }
 ?>
 <div id="formulario">
 <form name="formulario-consulta" id="formulario-consulta" action="consulta.php" method="post">
 <label for="numero">Ingrese el n&uacute;mero a consultar:</label>
 <input type="text" name="numero" id="numero" />
 <p><input type="submit" id="submit" name="submit" value="Consultar n&uacute;mero" />
 </form>
 <div id="mensaje"><?php 

 if(isset($mensaje)) {

 echo $mensaje;

 }

 ?></div>
 </div>

 </body>
</html>

Probamos y todo debiese funcionar sin problemas.

Y así de simple tenemos un identificador de números móviles para cuando lo necesitemos. Si nos fijamos, el proceso es bastante simple de implementar, por lo que los incentivamos a animarse, en solo minutos tendrán una muy útil aplicación para compartir.

Notas antes del cierre:

1.- Para nuestros amigos de fuera del país, lamentablemente este proceso sirve para Chile. Sin embargo, nos imaginamos que afuera debe ser bastante similar, por lo que los invitamos a compartir sus experiencias con otros usuarios.

Antes de terminar:

Y como siempre les recordamos que este tutorial ha sido:

Cualquier duda que puedan tener, los invitamos a dejar un comentario a continuación.

Esperamos que este tutorial haya sido de utilidad para Uds.

Muchas gracias por leer y será hasta una próxima oportunidad.

Staff CLH

Comparte este tutorial

El culpable de todo esto

Las tardes gloriosas de domingo y las grandes ovaciones a estadio lleno, no son algo extraño para Xabadu. Luego de ser descubierto a los 4 años en un partido de barrio por los ojeadores del gran Aviación F.C., sacudió el mercado nacional al ser traspasado en $500 pesos chilenos (1 USD) y 3 coca colas al renombrado Estrella Blanca de Lolol. Luego de una impresionante carrera por equipos como Lozapenco, Santa Cruz, Deportivo Lago Chungará y una incursión en la 3a división del futbol de Kazajstan, su record imbatible hasta la fecha de 1257 goles en 20 partidos lo llevo a ser elegido como uno de los arqueros más recordados en la historia pelotera nacional. Una lesión en el colmillo superior derecho lo llevó al retiro el año 2003, pero está de vuelta y sin duda que su jerarquía y experiencia internacional será un gran aporte.

En los barrios marginales se le conoce como: Xabadu

Comentarios en Facebook

17 Comentarios

  • Buenisimo, como siempre

  • Impresionante!! y muy creativos!! genial y muchas gracias!! lo usare!

  • Sólo hasta que llegue la portabilidad numérica y uno se pueda cambiar de compañía manteniendo su número.

  • ustedes son mi salvacion

  • anda bien…
    pero se debe modificar algunas funciones para ejecutarlo
    en mysql en php….
     
    ejemplo  mysqli_fetch_array
    esta diseñado para la version lite de mysql en php.
    saludos!

     

  • lo lei y trte de entender porq lo ando buscando desde hace aunq no soy de chile, pero esto es para consultarlo en una pagina verdad? porq me gustaria encontrarme con algo q pueda usar en la pc nada mas, q tal vez en el excel sea posible pero yo ni en cuenta jijiji saludos!

  • COMO HAGO PARA ADAPTARLO A ARGENTINA??? GRACIAS!

  • @CARLOS: Necesitas la base de numeración de tu país y reemplazar esos valores en la base de datos.

    Saludos!

  • Encuentro muy interesante este tema y esta muy buena la informacion =)

  • como puedo ejecutarlo?.

    porfavor si podrian responder.

    solamente lo guardo en el móvil?-.

1 2

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Gente linda que nos quiere

Donde mas estamos

news-0712

yakinjp


sabung ayam online

yakinjp

yakinjp

yakinjp

rtp yakinjp

yakinjp

yakinjp

yakinjp

yakinjp

yakinjp

yakinjp

yakinjp

yakinjp

yakinjp

judi bola online

slot thailand

yakinjp

yakinjp

yakinjp

yakinjp

yakinjp

ayowin

mahjong ways

judi bola online

8941

8942

8943

8944

8945

8946

8947

8948

8949

8950

8951

8952

8953

8954

8955

9001

9002

9003

9004

9005

9006

9007

9008

9009

9010

9011

9012

9013

9014

9015

10031

10032

10033

10034

10035

10036

10037

10038

10039

10040

10041

10042

10043

10044

10045

10101

10102

10103

10104

10105

10106

10107

10108

10109

10110

10111

10112

10113

10114

10115

8956

8957

8958

8959

8960

8961

8962

8963

8964

8965

8966

8967

8968

8969

8970

9016

9017

9018

9019

9020

9021

9022

9023

9024

9025

9026

9027

9028

9029

9030

10046

10047

10048

10049

10050

10051

10052

10053

10054

10055

10056

10057

10058

10059

10060

10116

10117

10118

10119

10120

10121

10122

10123

10124

10125

10126

10127

10128

10129

10130

9036

9037

9038

9039

9040

9041

9042

9043

9044

9045

8876

8877

8878

8879

8880

8996

8997

8998

8999

9000

9046

9047

9048

9049

9050

9051

9052

9053

9054

9055

10061

10062

10063

10064

10065

10066

10067

10068

10069

10070

10131

10132

10133

10134

10135

10136

10137

10138

10139

10140

10001

10002

10003

10004

10005

10006

10007

10008

10009

10010

10011

10012

10013

10014

10015

10016

10017

10018

10019

10020

10021

10022

10023

10024

10025

10026

10027

10028

10029

10030

10141

10142

10143

10144

10145

10146

10147

10148

10149

10150

10071

10072

10073

10074

10075

10076

10077

10078

10079

10080

10081

10082

10083

10084

10085

10151

10152

10153

10154

10155

10156

10157

10158

10159

10160

10161

10162

10163

10164

10165

10086

10087

10088

10089

10090

10091

10092

10093

10094

10095

10096

10097

10098

10099

10100

news-0712