Afficher des drapeaux sur son blog PluXml
Rédigé par Jean-Pierre Pourrez - - Aucun commentaireSi vous recevez beaucoup de spams dans les commentaires de votre blog, il peut être intéressant d'afficher le drapeau du pays de leurs origines pour les filtrer plus facilement et ajouter les adresses IP correspondantes dans une liste noire (black list).
Il y a plusieurs prestataires sur Internet pour avoir la géo-localisation d'une adresse IP. On peut y connaître , a minima, le code ISO et le nom du pays :
- https://ipinfo.io
Le site est en https. En envoyant une requête GET et en retour on obtient les informations au format JSON. In n'est pas nécessaire de s'inquiéter si votre fournisseur a bloqué le téléchargement de fichiers ou ressources depuis d'autres sites internet, comme c'est le cas chez Free.fr. - http://ip-api.com
Ce site est 2 à 3 fois plus rapide que le précédent. De plus, avec une requête POST on peut faire une requête pour un lot (batch)jusqu'à une centaine d'adresses IP. Cela marche aussi bien côté navigateur avec Javascript, qu'en PHP si votre hébergeur vous accorde la permission d'utiliser curl.
Un premier petit souci : les requêtes Javascript peuvent être bloquées par le plugin Ublock sur Firefox. Inscrivez simplement le site sur sa liste blanche. Par contre, le défaut suivant est plus redhibitoire : le site n'est pas en https. Si le vôtre utilise ce protocole, passez à une autre solution. Cela ne marchera ni côté navigateur, ni côté serveur.
Notez en passant, que vous aurez aussi pour être informé de la mise à jour de PluXml puisque le site pluxml.org n'utilise pas encore le protocole https. - http://ip2location.com
On aborde des solutions plus techniques.
ip2location offre la possibilité de charger librement, pour une inscription gratuite, jusqu'à quatre bases de données binaires pouvant être de taille importante suivant la richesse des informations demandées. Ces bases peuvent être installées sur son propre serveur. On les dit binaires car il n'y a null besoin d'un serveur SQL comme MySQL ou Sqlite3. En effet, il existe sur Github.com un plugin pour interroger ces bases depuis le langage PHP en avec une adresse IP. Les bases de données sont mises à jour tous les mois environ. - http://maxmind.com
Maxmind distribue aussi des bases de données libres. De plus, elles fonctionnent très bien avec la librairie GeoIp de PHP. Donc, si vous un accès total à votre serveur propulsé par Ubuntu ou Debian c'est la solution la plus simple. De plus, en programmant une tâche CRON, les mises à jour seront automatiques.
Par contre, si vous dépendez totalement d'un hébergeur, la situation est moins mirifique car aucun ne propose la librairie GeoIp dans son offre de base.
Ajouté à cela, leurs bases de données semblent moins riches que celles de Ip2location concernant la traduction des noms de pays, régions ou villes.
Sur toutes ces sites, on trouve une documentation suffisante avec des exemples pour assurer un interface avec son propre site internet.
On peut afficher les drapeaux de chaque pays à partir de leur code ISO-3166-1 alpha2. Il y a une grosse archive zip pour les images des drapeaux chez https://gosquared.com. Pour économiser de bande passante sur Internet, il est préférable de télécharger une image contenant les drapeaux de tous les pays. On utilise ensuite quelques règles CSS pour afficher uniquement la partie concernant un pays. On trouve sur ce serveur un script en Python pour générer l'image regroupant les drapeaux de 250 pays avec la feuille de style CSS adéquate, ainsi qu'une simple page HTML pour vérifier que le rendu est correct.
Des plugins pour PluXml existent pour les trois premiers fournisseurs. Ils contiennent tous l'image des drapeaux. Celui pour Ip-Info est finalisé et est téléchargeable en cliquant ici.
Par contre, la version 5.6 de PluXml ne fournit pas correctement l'adresse IP à utiliser par les plugins. il faut donc modifier légèrement les fichiers core/admin/comments.php et core/admin/comment.php. On ajoute pour cela aux balises <td> ou <li> un attribut data-ip contenant l'adresse IP directement exploitable par les plugins.
La hauteur d'affichage des commentaires n'est pas limitée dans PluXml et peut facilement dépasser la hauteur de l'écran quand leurs tailles dépassent le kilo-octets. Il suffit de rajouter une petite règle CSS dans le fichier theme.css côté administration du site.
Le listing ci-dessous montre les modifications à apporter à PluXml. Il a été généré par la commande "git diff".
Les lignes commençant par diff précisent les fichiers à modifier, les lignes commençant par le signe "-" sont à retirer, celles commençant par le signe "+" sont à ajouter. Les autres lignes sont des lignes de contexte pour se situer dans les fichiers sans recourir à la numérotation des lignes. Penser à utiliser la fonction recherche avec votre éditeur.