Obtenga el nombre de la provincia y ciudad según la IP en el proyecto laravel

A continuación, la columna del tutorial del marco de Laravel le presentará el método para obtener el nombre de la provincia y la ciudad según la IP, ¡y espero que sea útil para los amigos que lo necesiten!



De acuerdo con la ip para obtener la geolocalización, probé el paquete torann / geoip de laravel, que no es muy preciso. También existe el método de llamada a la API de Baidu para obtener información geográfica. Para reducir el costo de mantenimiento, finalmente se utilizó un paquete en thinkphp3.2. No está claro si es el marco tp incorporado. El principio de este paquete para obtener y localizar es la base de datos provincial y municipal integrada UTFWry.dat.



Cómo usar el proyecto laravel
Lo puse en el mismo directorio sdk de la aplicación del proyecto. Para poder usarlo, composer.json necesita agregar IpLocation.class.php a la carga automática del mapa de clases, de modo que las clases contenidas en el archivo se puedan cargar automáticamente cuando se llame (si no sabe por qué puede se cargará automáticamente, consulte el principio de carga automática de Laravel Composer).

1

2

3

4

5

6

"autoload": {     "classmap": [         "base de datos / semillas",         "base de datos / fábricas",         "sdk / Org / Net / IpLocation.class.php"     ]}, ejecutar el volcado del compositor - Uso básico de carga automática 1 2 3




















$ ip = new \ Org \ Net \ IpLocation ('UTFWry.dat');

$ location = $ ip-> getlocation ('223.104.1.100');

dd ($ location);

1. Para el valor de retorno estándar,
tomamos Ejemplo de ip de Guangdong Shenzhen

1

2

3

4

5

6

7

# Imprimir

matriz de resultados : 5 [

"ip" => "223.104.1.100"

"beginip" => "223.104.1.0"

"endip" => "223.104.1.255"

"país "=>" Shenzhen, provincia de Guangdong "

" area "=>" Móvil "]

2.El valor de retorno de las regiones individuales es diferente, el lado izquierdo es la ip de demostración, el lado derecho es el nombre del área de retorno

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# Municipio

'223.104.3.155', // Beijing

'223.104.7.155', //

Ciudad de Tianjin'223.104.25.155 ', //

Ciudad de Chongqing'223.104.5.200 ', // Distrito Xuhui de Shanghai

#

Región Autónoma'223.104.15.100 ', //

Ciudad Hohhot de Mongolia Interior'223.104.29.100 ', // Ciudad de Yinchuan, Ningxia

' 223.104.30.100 ', // Ciudad de Urumqi, Xinjiang

' 211.139.74.100 ', // Ciudad de Lhasa, Tibet

' 218.204.63.100 ', // Ciudad de Baise, Guangxi

 

' 1.32.192.100 ', // Hong Kong

'60 .246 .49.100 ', // Macao

Encapsula una función de método que devuelve el ID de área. Si lo
usas con frecuencia, generalmente te gustaría ponerlo en app \ Helpers.En php,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62


 

function get_ip_location ($ ip) {     $ ip_driver = new \ Org \ Net \ IpLocation ('UTFWry.dat');     $ location = $ ip_driver-> getlocation ($ ip);     $ location = $ location ['país']; // Shenzhen, provincia de Guangdong







 

p_id '=> $ id_provincia,' c_id '=> 0,' locname '=> $ bj.' 市 '];         }     }



 











 



















 

    // Otras consultas estándar

    $ hope_ids = [36,37,38,39,69]; // Excluir Beijing y las regiones que desea excluir

    $ province_name = $ city_name = ''; // Inicializar

    $ province_id = $ city_id = 0;

    // Todos los datos de la provincia

    $ all_province = DB :: table ('loc_province') -> whereNotIn ('id', $ esperan_ids) -> get ();

    foreach ($ all_province as $ prov) {         $ nombre = $ prov -> nombre;         $ prov_pos = mb_strpos ($ ubicación, $ nombre);         // si coincide con el objetivo         si {($ prov_pos! == false)             $ = $ province_id vincia> province_id;             $ province_name = $ nombre;             // from Elimine el nombre de la provincia de la cadena y elimine la palabra de provincia             $ location = mb_substr ($ location, $ prov_pos + mb_strlen ($ name));

















    } else {         return $ predeterminado;     } }



















 







 













Prueba

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

$ testips = [

    '223.104.3.155', //

    Beijing'223.104.7.155 ', //

    Tianjin'223.104.25.155', //

    Ciudad de Chongqing'223.104.5.200 ', // Distrito Xuhui de Shanghai'223.104.15.100

 

    ', //

    Ciudad Hohhot de Mongolia Interior'223.104.29.100 ', //

    Ciudad de Ningxia Yinchuan'223.104.30.100 ', // Urumqi, Ciudad de Xinjiang

    '211.139.74.100', // Ciudad de Lhasa, Tíbet

    '218.204.63.100', // Ciudad de Baise, Guangxi

 

    '1.32.192.100', // Hong Kong

    '60 .246.49.100 ',// Macao

 

    '223.104.1.100', // Ciudad de Shenzhen, provincia de Guangdong

];

echo "

"; 

foreach ($ testips as $ ip) { 

    print_r (get_ip_location ($ ip)); 

} 

Comprobar resultado 

1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

14 

15 

16 

17 

18 

19 

20 

21 

22 

23 

24 

25 

26 

27 

28 

29 

30 

31 

32 

33 

34 

35 

36 

37 

38 

39 

40 

41 

42 

43 

44 

45

46 

47 

48 

49 

50 

51 

52 

53 

54 

55 

56 

57 

58 

59 

60 

61 

62 

63 

64 

65 

66 

67 

68 

69 

70 

71 

72 

Array 

( 

    [p_id] => 1 

    [c_id] => 0 

    [locname] => Beijing 

) 

Array 

( 

    [p_id] => 3 

    [c_id] => 0 

    [locname] => Tianjin 

) 

Array 

( 

    [p_id] => 4 

    [c_id] => 0 

    [locname] => Chongqing 

)

Array 

( 

    [p_id] => 2 

    [c_id] => 0 

    [locname] => Shanghai 

) 

Array 

( 

    [p_id] => 7 

    [c_id] => 1 

    [locname] => Hohhot 

, Mongolia Interior ) 

Array 

( 

    [p_id] => 29 

    [c_id] => 1 

    [locname] => Yinchuan 

, Ningxia ) 

Array 

( 

    [p_id] => 31 

    [c_id] => 1 

    [locname] => Urumqi 

, Xinjiang ) 

Array 

( 

    [p_id] => 26 

    [ c_id] => 1 

    [locname] => Lhasa 

, Tibet ) 

Array 

( 

    [p_id] => 21 

    [c_id] => 13 

    [locname] => Guangxi Baise

) 

Array 

( 

    [p_id] => 32 

    [c_id] => 1 

    [locname] => Hong Kong 

) 

Array 

( 

    [p_id] => 33 

    [c_id] => 1 

    [locname] => Macao 

) 

Array 

( 

    [p_id] = > 20 

    [c_id] => 2 

    [locname] => Shenzhen 

, Guangdong )

Supongo que te gusta

Origin blog.csdn.net/yy17822307852/article/details/112599988
Recomendado
Clasificación