İlk olarak, kullanıcıların IP adresi ve yasaklı ülkelerin bilgilerini içeren bir tablo oluşturmanız gerekecek. Aşağıda bir örnek şema ve MariaDB (MySQL) sorguları bulunmaktadır:
CREATE TABLE banned_countries (
id INT PRIMARY KEY AUTO_INCREMENT,
country_code CHAR(2) NOT NULL
);
INSERT INTO banned_countries (country_code) VALUES
('RU'),
('FR'),
('CN'),
('CO');Bu tablo, yasaklı ülkelerin ISO ülke kodlarını içerir. Şimdi, bu tabloyu kullanarak PHP kodunu MariaDB ile uyumlu hale getirelim:
<?php
function isCountryBanned($countryCode)
{
$db_host = 'your_database_host';
$db_user = 'your_database_user';
$db_pass = 'your_database_password';
$db_name = 'your_database_name';
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$countryCode = $conn->real_escape_string($countryCode);
$query = "SELECT COUNT(*) as count FROM banned_countries WHERE country_code = '$countryCode'";
$result = $conn->query($query);
if ($result && $result->num_rows > 0) {
$row = $result->fetch_assoc();
$count = $row['count'];
return $count > 0;
}
return false;
}
$ziyaretci_ulke_kodu = ip_info("Visitor", "Countrycode");
if (isCountryBanned($ziyaretci_ulke_kodu)) {
header('HTTP/1.1 403 Forbidden');
echo "Forbidden Country IP! / Yasaklı Ülke IP'si";
die();
}
?>Bu örnekte, banned_countries tablosundan yasaklı ülkeleri kontrol etmek için isCountryBanned adlı bir fonksiyon ekledik. Bu fonksiyon, veritabanına bağlanır ve belirli bir ülkenin yasaklı olup olmadığını kontrol eder.
Lütfen veritabanı bağlantı bilgilerinizi, tablo adlarını ve diğer ayrıntıları gerçek değerlerle değiştirdiğinizden emin olun.
Ya da cloudflare ile ülkeleri doğrudan yasaklayabilirsiniz hocam