Obtenez le nom de la province et de la ville selon l'IP dans le projet laravel

Ci-dessous, la colonne du didacticiel du framework Laravel vous présentera la méthode d'obtention du nom de la province et de la ville en fonction de l'IP, et j'espère que cela sera utile aux amis dans le besoin!



Selon l'ip pour obtenir la géolocalisation, j'ai essayé le package torann / geoip de laravel, qui n'est pas très précis. Il y a aussi la méthode d'appel de l'API Baidu pour obtenir des informations géographiques.Afin de réduire les coûts de maintenance, un package dans thinkphp3.2 a finalement été utilisé.On ne sait pas si c'est le framework tp intégré. Le principe de ce package pour obtenir et localiser est la base de données provinciale et municipale intégrée UTFWry.dat.



Comment utiliser le projet laravel
Je l'ai mis dans le même répertoire sdk de l'application du projet. Afin de pouvoir l'utiliser, composer.json doit ajouter IpLocation.class.php au chargement automatique de classmap, afin que les classes contenues dans le fichier puissent être automatiquement chargées lors de l'appel (si vous ne savez pas pourquoi il peut être chargé automatiquement, veuillez vous référer au principe de chargement automatique de Laravel Composer).

1

2

3

4

5

6

"autoload": {     "classmap": [         "database / seeds",         "database / factories",         "sdk / Org / Net / IpLocation.class.php"     ]}, exécutez le vidage du composeur - Utilisation de base de chargement automatique 1 2 3




















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

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

dd ($ location);

1. Pour la valeur de retour standard,
nous prenons Exemple d'IP Guangdong Shenzhen

1

2

3

4

5

6

7

# Tableau des résultats d'impression

: 5 [

"ip" => "223.104.1.100"

"beginip" => "223.104.1.0"

"endip" => "223.104.1.255"

"pays "=>" Shenzhen, province du Guangdong "

" area "=>" Mobile "]

2.La valeur de retour des régions individuelles est différente, le côté gauche est l'IP de démonstration, le côté droit est le nom de la zone de retour

1

2

3

4

5

6

7

8

9

10

11

12

13

14

# Municipality

'223.104.3.155', // Beijing

'223.104.7.155', // Tianjin

City'223.104.25.155 ', // Chongqing

City'223.104.5.200', // Shanghai Xuhui District

# Autonomous

Region'223.104.15.100 ', // Inner Mongolia Hohhot

City'223.104.29.100 ', // Yinchuan City, Ningxia

' 223.104.30.100 ', // Urumqi City, Xinjiang

' 211.139.74.100 ', // Lhassa City, Tibet

' 218.204.63.100 ', // Baise City, Guangxi

 

' 1.32.192.100 ', // Hong Kong

'60 .246 .49.100 ', // Macao

Encapsule une fonction de méthode qui renvoie l'ID de zone. Si vous l'
utilisez fréquemment, vous préférez généralement la placer dans 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 ['country']; // Shenzhen, province du Guangdong







 

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



 











 



















 

    // Autres requêtes standard

    $ expect_ids = [36,37,38,39,69]; // Excluez Pékin et les régions que vous souhaitez exclure

    $ province_name = $ city_name = ''; // Initialiser

    $ province_id = $ city_id = 0;

    // Toutes les données de province

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

    foreach ($ all_province as $ prov) {         $ name = $ prov -> name;         $ prov_pos = mb_strpos ($ location, $ name);         // s'il correspond à la cible         if ($ prov_pos! == false) {             $ province_id = $ prov-> province_id;             $ province_name = $ name;             // from Supprime le nom de la province de la chaîne et supprime le mot             de la province $ location = mb_substr ($ location, $ prov_pos + mb_strlen ($ name));

















    } else {         return $ default;     } }



















 







 













Test

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', // Chongqing

    City'223.104.5.200 ', // Shanghai Xuhui District'223.104.15.100

 

    ', // Inner Mongolia Hohhot

    City'223.104.29.100 ', // Ningxia Yinchuan

    City'223.104.30.100', // Urumqi, Xinjiang City

    «211.139.74.100», // Lhassa City, Tibet

    «218.204.63.100», // Baise City, Guangxi

 

    «1.32.192.100», // Hong Kong «

    60 .246.49.100 »,// Macao

 

    "223.104.1.100", // ville de Shenzhen, province du Guangdong

];

echo "

"; 

foreach ($ testips as $ ip) { 

    print_r (get_ip_location ($ ip)); 

} 

Vérifier le résultat 

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] => Pékin 

) 

Array 

( 

    [p_id] => 3 

    [c_id] => 0 

    [locname] => Tianjin 

) 

Tableau 

( 

    [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 

, Mongolie intérieure ) 

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] => Lhassa 

, 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 )

Je suppose que tu aimes

Origine blog.csdn.net/yy17822307852/article/details/112599988
conseillé
Classement