PHP’de public IP almak — bağımlılık olmadan, API anahtarı olmadan
<p>PHP, sunucu tarafında en çok dağıtılan dillerden biri olmaya devam ediyor ve internetin önemli bir bölümünü çalıştırıyor. Eğer bir PHP uygulaması geliştiriyorsanız ve public IP adresine ihtiyacınız varsa — coğrafi konum, DDNS, tanılama veya ülke tespiti için — bu makalede IPPubblico.org kullanarak yaygın yöntemleri inceleyeceğiz: ücretsiz, anahtarsız, HTTPS, JSON ve düz metin uç noktaları.</p>
<hr/>
<h2>
<a name="use-case-1-your-servers-own-public-ip-oneliner" href="#use-case-1-your-servers-own-public-ip-oneliner"></a>
Kullanım Durumu 1 — Sunucunun kendi public IP'si (tek satırlık)
</h2>
<p>En basit durum: kendi public IP'sini bilmesi gereken bir PHP scripti.<br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code><span class="cp"><?php </span?>$ip = trim(file_get_contents(‘https://ipv4.ippubblico.org/‘));
echo $ip; // 203.0.113.42
<p><code>file_get_contents</code> kullanımı için <code>allow_url_fopen</code> etkin olmalıdır (çoğu sunucuda varsayılan olarak etkindir). Değilse, cURL kullanın (aşağıya bakınız).</p>
<hr/>
<h2>
<a name="use-case-2-with-curl-recommended-for-production" href="#use-case-2-with-curl-recommended-for-production"></a>
Kullanım Durumu 2 — cURL ile (üretim için önerilir)
</h2>
<p><code>file_get_contents</code> zaman aşımı kontrolü sunmaz ve hata işleme minimumdur. Üretim kodu için cURL daha iyidir:<br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code><span class="cp"><?php </span?>function getPublicIP(): ?string {
$ch = curl_init(‘https://ipv4.ippubblico.org/‘);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => true,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
<span class="k">if</span> <span class="p">(</span><span class="nv">$response</span> <span class="o">===</span> <span class="kc">false</span> <span class="o">||</span> <span class="nv">$httpCode</span> <span class="o">!==</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nb">trim</span><span class="p">(</span><span class="nv">$response</span><span class="p">);</span>}
$ip = getPublicIP();
echo $ip ?? ‘Unavailable’;


