
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Check IP to Country</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
margin: 20px;
}
.loading {
color: blue;
font-size: 18px;
}
.result {
margin-top: 20px;
font-size: 20px;
font-weight: bold;
}
.flag {
margin-top: 10px;
width: 100px;
height: auto;
}
</style>
</head>
<body>
<h1>Check IP to Country</h1>
<p class="loading">Loading your IP information...</p>
<div class="result"></div>
<script>
// ตรวจสอบรูปแบบ IP Address
function validateIP(ip) {
const ipPattern = /^(\d{1,3}\.){3}\d{1,3}$/;
if (ipPattern.test(ip)) {
const parts = ip.split(".");
return parts.every(part => parseInt(part, 10) >= 0 && parseInt(part, 10) <= 255);
}
return false;
}
// แปลง IP Address เป็นชื่อประเทศและรูปธง
async function ipToCountry(ip) {
if (!validateIP(ip)) {
return { country: "Invalid IP Address", flag: null };
}
try {
const response = await fetch(`http://ip-api.com/json/${ip}`);
if (response.ok) {
const data = await response.json();
if (data.status === "success") {
const country = data.country || "Country not found";
const countryCode = data.countryCode || null; // ISO Alpha-2 code
const flag = countryCode
? `https://flagcdn.com/w320/${countryCode.toLowerCase()}.png`
: null; // URL ของรูปธง
return { country, flag };
} else {
return { country: "Country not found", flag: null };
}
} else {
return { country: "API request failed", flag: null };
}
} catch (error) {
return { country: `Error: ${error.message}`, flag: null };
}
}
// ฟังก์ชันดึง IP Address ของผู้ใช้และแสดงผล
async function checkUserIP() {
const loadingElement = document.querySelector('.loading');
const resultElement = document.querySelector('.result');
try {
// ใช้ API เพื่อดึง IP Address ของผู้ใช้
const response = await fetch('https://api.ipify.org?format=json');
if (response.ok) {
const data = await response.json();
const userIP = data.ip;
loadingElement.textContent = `Your IP: ${userIP}`;
// ตรวจสอบและแปลง IP เป็นชื่อประเทศและรูปธง
const { country, flag } = await ipToCountry(userIP);
resultElement.innerHTML = `Country: ${country}<br>`;
// ถ้ามีรูปธงให้แสดง
if (flag) {
const flagImg = document.createElement('img');
flagImg.src = flag;
flagImg.alt = `Flag of ${country}`;
flagImg.className = 'flag';
resultElement.appendChild(flagImg);
}
} else {
loadingElement.textContent = "Failed to fetch your IP address.";
}
} catch (error) {
loadingElement.textContent = `Error: ${error.message}`;
}
}
// เรียกฟังก์ชันเมื่อโหลดเพจ
window.onload = checkUserIP;
</script>
</body>
</html>