Vérifier l’IP serveur et répartir les téléchargements dans Laravel

Auteur:Lisa Farrell · 2026-06-01

Laravel peut utiliser la même interface IP de deux façons utiles : le backend vérifie l’IP sortante du serveur, tandis que la page de téléchargement appelle l’interface dans le navigateur pour répartir les visiteurs.

Explication de l’API

Cet article explique à la fois la vérification de l’IP serveur et la répartition des téléchargements selon l’IP visiteur. Ces usages sont différents et ne doivent pas être confondus.

{"ip":"185.220.236.7","country":"TW","region":"Taiwan","city":"Taipei"}

Cas d’utilisation

Ces scénarios montrent la valeur de l’interface d’information IP tout en séparant clairement IP serveur et IP visiteur.

  • Ces scénarios montrent la valeur de l’interface d’information IP tout en séparant clairement IP serveur et IP visiteur.
  • Vérifier l’IP serveur et répartir les téléchargements dans Laravel
  • Explication de l’API
  • Recommandations SEO et UX

Logique d’implémentation

Avant l’implémentation, identifiez le demandeur : une requête serveur renvoie l’IP serveur, une requête navigateur renvoie l’IP visiteur.

  • Avant l’implémentation, identifiez le demandeur : une requête serveur renvoie l’IP serveur, une requête navigateur renvoie l’IP visiteur.
  • Cet article explique à la fois la vérification de l’IP serveur et la répartition des téléchargements selon l’IP visiteur. Ces usages sont différents et ne doivent pas être confondus.
  • Tous les exemples ci-dessous utilisent directement https://my.ipin.io/info, avec commentaires et textes d’interface localisés.
  • Le contenu par défaut doit rester complet et lisible, tandis que le contenu régional sert d’amélioration. Les moteurs indexent un contenu stable et la page reste utilisable si l’API échoue.

Exemple de code

Tous les exemples ci-dessous utilisent directement https://my.ipin.io/info, avec commentaires et textes d’interface localisés.

IpController

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Http;

class IpController extends Controller
{
    public function server()
    {
        $info = ['ip'=>'Inconnu', 'country'=>'Inconnu', 'region'=>'Inconnu', 'city'=>'Inconnu'];
        try {
            // Appel serveur vers /info : vérifie l’IP sortante du serveur.
            $response = Http::timeout(3)->get('https://my.ipin.io/info');
            if ($response->successful()) { $info = array_merge($info, $response->json()); }
        } catch (\Throwable $e) {}
        return view('server-ip', ['info' => $info]);
    }

    public function download()
    {
        return view('download');
    }
}

server-ip.blade.php

<div class="server-ip-box">
  <h2>IP sortante du serveur</h2>
  <p>IP:{{ $info['ip'] }}</p>
  <p>Country:{{ $info['country'] }}</p>
  <p>Region:{{ $info['region'] }}</p>
  <p>City:{{ $info['city'] }}</p>
</div>

download.blade.php

<div class="download-box">
  <a id="ipinDownloadBtn" href="/download/default/app.zip">Download</a>
  <p id="ipinDownloadNode">Default</p>
</div>
<script>
(async function () {
  const el = document.getElementById("ipinDownloadNode");
  const btn = document.getElementById("ipinDownloadBtn");
  const defaultText = "Bienvenue. Ceci est le contenu par défaut.";
const contentMap = { TW: "Contenu pour les visiteurs de Taïwan", US: "Contenu pour les visiteurs des États-Unis", JP: "Contenu pour les visiteurs du Japon" };
try {
  // Appel navigateur vers /info : détecte l’IP du visiteur.
  const info = await fetch("https://my.ipin.io/info").then(res => res.json());
  el.textContent = contentMap[info.country] || defaultText;
} catch (e) {
  // Conserver la valeur par défaut si la requête API échoue.
  el.textContent = defaultText;
}
  const nodeMap = { TW: "/download/tw/app.zip", US: "/download/us/app.zip", JP: "/download/jp/app.zip" };
  try {
    const info = await fetch("https://my.ipin.io/info").then(res => res.json());
    btn.href = nodeMap[info.country] || "/download/default/app.zip";
    el.textContent = info.country || "Default";
  } catch (e) { btn.href = "/download/default/app.zip"; }
})();
</script>

routes/web.php

use App\Http\Controllers\IpController;

Route::get('/server-ip', [IpController::class, 'server']);
Route::get('/download', [IpController::class, 'download']);

Recommandations SEO et UX

Le contenu par défaut doit rester complet et lisible, tandis que le contenu régional sert d’amélioration. Les moteurs indexent un contenu stable et la page reste utilisable si l’API échoue.

Erreurs fréquentes

Les points suivants influencent la précision de l’article, l’exploitabilité du code et la crédibilité de l’explication de l’API.

  • Les points suivants influencent la précision de l’article, l’exploitabilité du code et la crédibilité de l’explication de l’API.
  • Le contenu par défaut doit rester complet et lisible, tandis que le contenu régional sert d’amélioration. Les moteurs indexent un contenu stable et la page reste utilisable si l’API échoue.
  • Avant l’implémentation, identifiez le demandeur : une requête serveur renvoie l’IP serveur, une requête navigateur renvoie l’IP visiteur.
  • Ces scénarios montrent la valeur de l’interface d’information IP tout en séparant clairement IP serveur et IP visiteur.

Résumé

Cet article explique à la fois la vérification de l’IP serveur et la répartition des téléchargements selon l’IP visiteur. Ces usages sont différents et ne doivent pas être confondus.

FAQ

Cette FAQ est spécifique à cet article et n’est pas répétée dans tous les articles.

Question:Vérifier l’IP serveur et répartir les téléchargements dans Laravel
Réponse:Cet article explique à la fois la vérification de l’IP serveur et la répartition des téléchargements selon l’IP visiteur. Ces usages sont différents et ne doivent pas être confondus.
Question:Explication de l’API
Réponse:Cet article explique à la fois la vérification de l’IP serveur et la répartition des téléchargements selon l’IP visiteur. Ces usages sont différents et ne doivent pas être confondus.
Question:Logique d’implémentation
Réponse:Avant l’implémentation, identifiez le demandeur : une requête serveur renvoie l’IP serveur, une requête navigateur renvoie l’IP visiteur.
Question:Erreurs fréquentes
Réponse:Les points suivants influencent la précision de l’article, l’exploitabilité du code et la crédibilité de l’explication de l’API.
Question:Résumé
Réponse:Cet article explique à la fois la vérification de l’IP serveur et la répartition des téléchargements selon l’IP visiteur. Ces usages sont différents et ne doivent pas être confondus.