Signatur
Beschreibung
inet_ntop() ist das Gegenstück zu inet_pton() und wandelt eine in binärer Darstellung gespeicherte IP-Adresse in ihren lesbaren String zurück. Die Funktion unterstützt sowohl IPv4 (4 Byte) als auch IPv6 (16 Byte).
Typischerweise wird diese Funktion verwendet, wenn IP-Adressen platzsparend in binärer Form in einer Datenbank gespeichert wurden (z. B. als BINARY(4) bzw. BINARY(16) in MySQL) und für die Ausgabe oder Vergleiche wieder in das lesbare Format überführt werden müssen.
Der zurückgegebene String entspricht der kanonischen Textdarstellung: Bei IPv4 die bekannte Punktnotation (192.168.1.1), bei IPv6 die Doppelpunkt-Hex-Notation in komprimierter Form gemäß RFC 5952 (2001:db8::1).
In Kombination mit inet_pton() lässt sich ein vollständiger, typsicherer Speicher- und Ausgabe-Workflow für IP-Adressen aufbauen, der beide Protokollversionen einheitlich behandelt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ip Pflicht | string | Die binär komprimierte IP-Adresse als roher Byte-String. Muss exakt 4 Bytes (IPv4) oder 16 Bytes (IPv6) lang sein, wie sie z. B. von inet_pton() erzeugt wird. |
Rückgabewert
false, wenn der übergebene Byte-String keine gültige komprimierte IPv4- oder IPv6-Adresse darstellt (z. B. falsche Länge).Beispiele
IPv4-Adresse konvertieren
<?php
// Binär komprimierte IPv4-Adresse erzeugen und zurückwandeln
$binary = inet_pton('192.168.0.1');
$readable = inet_ntop($binary);
echo $readable; // 192.168.0.1
?>
IPv6-Adresse konvertieren
<?php
// Binär komprimierte IPv6-Adresse erzeugen und zurückwandeln
$binary = inet_pton('2001:0db8:0000:0000:0000:0000:0000:0001');
$readable = inet_ntop($binary);
echo $readable; // 2001:db8::1
?>
IP-Adresse aus Datenbank lesen und ausgeben
<?php
// Simulierter Datenbankwert (BINARY(4) für IPv4)
// Typisches Beispiel: IP wurde mit inet_pton() gespeichert
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->query('SELECT ip_binary FROM logins LIMIT 1');
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row && $row['ip_binary'] !== null) {
$ip = inet_ntop($row['ip_binary']);
if ($ip !== false) {
echo 'Letzte Anmelde-IP: ' . htmlspecialchars($ip);
} else {
echo 'Ungültige IP-Adresse in der Datenbank.';
}
}
?>
// Wichtig · Fallstricke
Plattform-Unterstützung: Auf Windows-Systemen steht inet_ntop() erst ab PHP 5.3.0 zuverlässig zur Verfügung, da es dort von der WinSock-Bibliothek abhängt.
Ausgabe-Format IPv6: Der zurückgegebene IPv6-String wird nach RFC 5952 normalisiert – aufeinanderfolgende Null-Blöcke werden zu :: zusammengefasst, führende Nullen innerhalb von Blöcken werden entfernt. Beim Vergleich von IPv6-Adressen sollte daher immer die binäre Form verglichen werden, nicht die String-Darstellung.
Sicherheit: Beim Ausgeben zurückgewandelter IP-Adressen in HTML stets htmlspecialchars() verwenden, um XSS zu verhindern, auch wenn IP-Adressen üblicherweise sicheren Inhalt haben.