Maison > développement back-end > tutoriel php > Comment puis-je déterminer le pays d'un visiteur d'un site Web à l'aide de son adresse IP ?

Comment puis-je déterminer le pays d'un visiteur d'un site Web à l'aide de son adresse IP ?

Patricia Arquette
Libérer: 2024-12-13 10:43:15
original
407 Les gens l'ont consulté

How Can I Determine a Website Visitor's Country Using Their IP Address?

Obtention du pays du visiteur à partir de l'adresse IP

Vous pouvez facilement récupérer le pays d'un visiteur à partir de son adresse IP en utilisant la fonction PHP suggérée :

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

function ip_info($ip = NULL, $purpose = "location", $deep_detect = TRUE) {

    $output = NULL;

    if (filter_var($ip, FILTER_VALIDATE_IP) === FALSE) {

        $ip = $_SERVER["REMOTE_ADDR"];

        if ($deep_detect) {

            if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP))

                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

            if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP))

                $ip = $_SERVER['HTTP_CLIENT_IP'];

        }

    }

    $purpose    = str_replace(array("name", "\n", "\t", " ", "-", "_"), NULL, strtolower(trim($purpose)));

    $support    = array("country", "countrycode", "state", "region", "city", "location", "address");

    $continents = array(

        "AF" => "Africa",

        "AN" => "Antarctica",

        "AS" => "Asia",

        "EU" => "Europe",

        "OC" => "Australia (Oceania)",

        "NA" => "North America",

        "SA" => "South America"

    );

    if (filter_var($ip, FILTER_VALIDATE_IP) && in_array($purpose, $support)) {

        $ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip));

        if (@strlen(trim($ipdat->geoplugin_countryCode)) == 2) {

            switch ($purpose) {

                case "location":

                    $output = array(

                        "city"           => @$ipdat->geoplugin_city,

                        "state"          => @$ipdat->geoplugin_regionName,

                        "country"        => @$ipdat->geoplugin_countryName,

                        "country_code"   => @$ipdat->geoplugin_countryCode,

                        "continent"      => @$continents[strtoupper($ipdat->geoplugin_continentCode)],

                        "continent_code" => @$ipdat->geoplugin_continentCode

                    );

                    break;

                case "address":

                    $address = array($ipdat->geoplugin_countryName);

                    if (@strlen($ipdat->geoplugin_regionName) >= 1)

                        $address[] = $ipdat->geoplugin_regionName;

                    if (@strlen($ipdat->geoplugin_city) >= 1)

                        $address[] = $ipdat->geoplugin_city;

                    $output = implode(", ", array_reverse($address));

                    break;

                case "city":

                    $output = @$ipdat->geoplugin_city;

                    break;

                case "state":

                    $output = @$ipdat->geoplugin_regionName;

                    break;

                case "region":

                    $output = @$ipdat->geoplugin_regionName;

                    break;

                case "country":

                    $output = @$ipdat->geoplugin_countryName;

                    break;

                case "countrycode":

                    $output = @$ipdat->geoplugin_countryCode;

                    break;

            }

        }

    }

    return $output;

}

Copier après la connexion

Cette fonction récupère l'adresse IP du visiteur, vérifie sa validité et utilise l'API Geoplugin pour obtenir le pays correspondant.

Exemple 1 : Extraction des détails de l'adresse IP du visiteur

1

2

3

4

5

6

7

echo ip_info("Visitor", "Country"); // India

echo ip_info("Visitor", "Country Code"); // IN

echo ip_info("Visitor", "State"); // Andhra Pradesh

echo ip_info("Visitor", "City"); // Proddatur

echo ip_info("Visitor", "Address"); // Proddatur, Andhra Pradesh, India

 

print_r(ip_info("Visitor", "Location")); // Array ( [city] => Proddatur [state] => Andhra Pradesh [country] => India [country_code] => IN [continent] => Asia [continent_code] => AS )

Copier après la connexion

Exemple 2 : Récupération des détails de l'adresse IP

1

2

3

4

5

6

7

echo ip_info("173.252.110.27", "Country"); // United States

echo ip_info("173.252.110.27", "Country Code"); // US

echo ip_info("173.252.110.27", "State"); // California

echo ip_info("173.252.110.27", "City"); // Menlo Park

echo ip_info("173.252.110.27", "Address"); // Menlo Park, California, United States

 

print_r(ip_info("173.252.110.27", "Location")); // Array ( [city] => Menlo Park [state] => California [country] => United States [country_code] => US [continent] => North America [continent_code] => NA )

Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal