Autoriser l’accès à une page à seulement une liste de pays

15/08/2012 at 17:53

En PHP et avec le .htaccess, on peut facilement identifier une IP et en restreindre l’accès à son site, mais comment faire pour n’autoriser qu’un seul pays à accéder à une page web ? (pour éviter le spamming et les arnaques par exemple)

Voici un script en PHP pour réaliser cela :

<?php
     // Geolocalise l'IP du visiteur avec le service geoplugin.net
     $geoPlugin_array = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=".$_SERVER['REMOTE_ADDR']));

     // Liste des pays que j'autorise (ici France et Allemagne)
     $pays_autorise = array ("FR","DE");

     // Vérifie si l'IP du visiteur est dans la liste des pays que j'ai autorisé
     if (in_array($geoPlugin_array['geoplugin_countryCode'],$pays_autorise)) {
        // je suis dans la liste autorisée donc ne rien faire de spécial;
     }
     else { header('Location:http://infodon.fr/'); exit(); }
            // Je suis interdit, donc on me renvoi ailleurs;
?>

Attention ! Pour que le renvoi avec la fonction “header” fonctionne, il faut vérifier que le script soit bien tout au début de votre page, même un petit espace peut faire que ça ne marchera pas, vous aurez alors une erreur du type “Headers allready sent“.

Tags: