
PHP ile Ülke Koduna Göre Ziyaretçi IP Adresi Engelleme Nasıl Yapılır?
Ülke kodlarına göre IP adreslerini engellemek, genellikle belirli coğrafi bölgelerden gelen trafiği yönetmek veya kısıtlamak amacıyla kullanılır. PHP ile bu işlemi gerçekleştirmek için IP adreslerini ülke kodlarına dönüştürmek ve ardından bu ülkelere göre erişimi kısıtlamak mümkündür. İşte bu işlemi nasıl yapabileceğinizi adım adım açıklayan bir rehber:
Gerekenler
- Ülke Kodları ve IP Adresleri Veritabanı: IP adreslerini ülke kodlarına dönüştürmek için bir veritabanına ihtiyacınız olacak. Genellikle GeoIP veritabanları bu amaçla kullanılır.
- PHP Uygulaması: IP adreslerini kontrol etmek ve engellemek için PHP kodu.
- Ülke Kodları Listesi: IP adreslerini karşılaştırmak için hangi ülkelerden gelen IP adreslerini engellemek istediğinizi belirten bir liste.
Adımlar
1. GeoIP Veritabanı Edinme
GeoIP veritabanları, IP adreslerini ülkelere göre sınıflandırır. Bu veritabanlarını aşağıdaki kaynaklardan edinebilirsiniz:
- MaxMind GeoLite2
- IP2Location
Bu veritabanları genellikle CSV, SQL veya JSON formatında olabilir.
2. GeoIP Veritabanını PHP ile Entegre Etme
GeoIP veritabanını PHP uygulamanıza entegre etmek için veritabanını içe aktarabilir ve ardından IP adreslerini sorgulayarak ülke kodlarına dönüştürebilirsiniz.
Örneğin, MaxMind GeoLite2 veritabanını kullanarak bir IP adresini ülke koduna dönüştürebilirsiniz:
<?php
require_once ‘vendor/autoload.php’; // Composer autoload
use GeoIp2\Database\Reader;
// GeoIP veritabanını yükleyin
$reader = new Reader(‘/path/to/GeoLite2-Country.mmdb’);
// IP adresini al
$ipAddress = $_SERVER[‘REMOTE_ADDR’];
// Ülke kodunu al
try {
$record = $reader->country($ipAddress);
$countryCode = $record->country->isoCode;
} catch (Exception $e) {
// Hata durumunda varsayılan ülke kodu
$countryCode = ‘US’;
}
?>
3. Ülke Kodlarına Göre Erişimi Engelleme
Belirli ülkelerden gelen IP adreslerini engellemek için, ülke kodlarını karşılaştırarak bir erişim kontrolü yapabilirsiniz. Aşağıdaki kod, ülke koduna göre IP adreslerini engellemek için örnek bir yaklaşımı göstermektedir:
<?php
// Engellenecek ülkeler listesi
$blockedCountries = [‘CN’, ‘RU’, ‘BR’]; // Örneğin, Çin, Rusya, Brezilya
// IP adresini al
$ipAddress = $_SERVER[‘REMOTE_ADDR’];
// Ülke kodunu al
try {
$record = $reader->country($ipAddress);
$countryCode = $record->country->isoCode;
} catch (Exception $e) {
// Hata durumunda varsayılan ülke kodu
$countryCode = ‘US’;
}
// Erişimi engelle
if (in_array($countryCode, $blockedCountries)) {
header(‘HTTP/1.0 403 Forbidden’);
echo ‘Erişim engellendi.’;
exit;
}
// Diğer kodlar
?>
4. Performans ve Verimlilik
- Önbellekleme: Veritabanı sorgularını önbelleğe alarak performansı artırabilirsiniz.
- Güncellemeler: GeoIP veritabanlarının düzenli olarak güncellenmesi gerekmektedir. Güncellemeleri kontrol edin ve veritabanınızı güncel tutun.
PHP ile ülke koduna göre IP adreslerini engellemek, kullanıcıların coğrafi konumlarına göre erişimi kontrol etmenin etkili bir yoludur. GeoIP veritabanlarını kullanarak IP adreslerini ülkelere dönüştürebilir ve ardından bu ülkelere göre erişim kısıtlamaları yapabilirsiniz. Bu yöntemi uygulayarak, istenmeyen coğrafi bölgelerden gelen trafiği etkili bir şekilde yönetebilirsiniz.