survos/ip2location-bundle

ip2location.ip 的 Symfony 包装器

支持包维护!
kbond

安装: 250

依赖者: 0

建议者: 0

安全性: 0

星星: 0

关注者: 3

分支: 0

开放问题: 0

类型:symfony-bundle

1.5.340 2024-06-30 10:53 UTC

This package is auto-updated.

Last update: 2024-09-24 13:45:07 UTC


README

用于从 IP 地址获取数据的 ip2location/ip2location-io-php 库的 Symfony Bundle。

首先,在 https://www.ip2location.io/pricing 获取 API 密钥并将其添加到 .env.local

echo "IP2LOCATION_API_KEY=my-api-key" >> .env.local
composer req survos/ip2location-bundle
bin/console debug:config survos_ip2_location --format=yaml > config/packages/survos_ip2_location.yaml
{{ ipGeolocation(app.request.clientIp).country_code}}

默认情况下,该包从环境中获取 API 密钥。由于 localhost 没有地理位置数据,您可以设置一个默认值。如果您在本地上运行,远程地址是 localhost。在 whatismyip.com 或 https://api.ipify.org?format=json 获取您的真实 IP 地址

# config/packages/survos_ip2location.yaml
survos_ip2_location:
  api_key: '%env(IP2LOCATION_API_KEY)%'
  localhost_ip: 8.8.8.8
  

简单但实用的应用

需求

  • 本地安装 PHP 8
  • Symfony CLI
  • sed(用于更改 /app 到 / 而不打开编辑器)
  • API 密钥
symfony new Ip2locationDemo --webapp && cd Ip2locationDemo
echo "IP2LOCATION_API_KEY=my-api-key" >> .env.local
symfony composer req survos/ip2location-bundle
symfony console make:controller AppController
sed -i "s|/app|/|" src/Controller/AppController.php 

cat <<'EOF' > templates/app/index.html.twig
{% extends 'base.html.twig' %}
{% block body %}
{% set ip = app.request.clientIp %}
{{ isLocalhost(ip) ? "<div>Localhost has no geolocation, using value from config</div>" }}
Hello, visitor from {{ ipGeolocation(ip).country_name}} )
<pre>{{ ipGeolocation(ip)|json_encode(constant('JSON_PRETTY_PRINT')) }}</pre>

Powered by IP2Location.io <a href="https://www.ip2location.io">IP geolocation</a> web service.

{% endblock %}
EOF

symfony server:start -d
symfony open:local