Dieser Artikel stellt vor, wie Sie IP-Adressdaten in einem geeigneten Format in einer Datenbank speichern und IP-Adressen einfach vergleichen. 1. Speichern Sie die IP-Adresse in der Datenbank Die IP-Adresse wird in der Datenbank gespeichert und das Feld wird im Allgemeinen wie folgt definiert: `ip` char(15) NICHT NULL, Da die maximale Länge einer IP-Adresse (255.255.255.255) 15 beträgt, ist ein 15-Bit-Zeichen ausreichend. Tabellenbenutzer erstellen CREATE TABLE `Benutzer` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NICHT NULL, `ip` char(15) NICHT NULL, PRIMÄRSCHLÜSSEL (`id`) )ENGINE=InnoDB; Fügen Sie einige Daten ein INSERT INTO `Benutzer` (`id`, `name`, `ip`) WERTE (2, 'Abby', '192.168.1.1'), (3, 'Daisy', '172.16.11.66'), (4, 'Christine', '220.117.131.12'); 2. MySQL inet_aton- und inet_ntoa-Methoden MySQL bietet zwei Methoden zum Umgang mit IP-Adressen inet_aton konvertiert IP in vorzeichenlose Ganzzahlen (4-8 Bit) inet_ntoa konvertiert die ganzzahlige IP-Adresse in eine Adresse Bevor Sie die Daten einfügen, wandeln Sie die IP-Adresse mit inet_aton in eine Ganzzahl um, um Platz zu sparen, da char(15) 16 Bytes belegt. Verwenden Sie beim Anzeigen von Daten inet_ntoa , um die ganzzahlige IP-Adresse in eine Adresse zur Anzeige umzuwandeln. Beispiel: CREATE TABLE `Benutzer` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NICHT NULL, `ip` int(10) unsigned NICHT NULL, PRIMÄRSCHLÜSSEL (`id`) )ENGINE=InnoDB; Fügen Sie einige Daten ein INSERT INTO `Benutzer` (`id`, `name`, `ip`) WERTE (2, 'Abby', inet_aton('192.168.1.1')), (3, 'Daisy', inet_aton('172.16.11.66')), (4, 'Christine', inet_aton('220.117.131.12')); mysql> wähle * von „Benutzer“; +----+-----------+------------+ | ID | Name | IP | +----+-----------+------------+ | 2 | Abby | 3232235777 | | 3 | Gänseblümchen | 2886732610 | | 4 | Christine | 3698688780 | +----+-----------+------------+ Die Abfrage wird als elektrische Adresse angezeigt mysql> wähle ID, Name, inet_ntoa(IP) als IP von „Benutzer“; +----+-----------+----------------+ | ID | Name | IP | +----+-----------+----------------+ | 2 | Abby | 192.168.1.1 | | 3 | Gänseblümchen | 172.16.11.66 | | 4 | Christine | 220.117.131.12 | +----+-----------+----------------+ 3. Vergleichsmethode Wenn Sie Benutzer in einem bestimmten Netzwerksegment suchen müssen (z. B. 172.16.11.1 ~ 172.16.11.100), können Sie die IP-Adresse mit der ip2long-Methode von PHP in eine Ganzzahl umwandeln und dann vergleichen. <?php $ip_start = "172.16.11.1"; $ip_end = "172.16.11.100"; echo 'ip2long(ip_start):'.sprintf('%u',ip2long($ip_start)); // 2886732545 echo 'ip2long(ip_end):'.sprintf('%u',ip2long($ip_end)); // 2886732644 ?> Abfrage: mysql> wähle ip,name,inet_ntoa(ip) als IP von „Benutzer“, wobei ip>=2886732545 und ip<=2886732644; +------------+-------+---------------+ | IP-Adresse | Name | IP-Adresse | +------------+-------+---------------+ | 2886732610 | Gänseblümchen | 172.16.11.66 | +------------+-------+---------------+ Hinweis: Wenn Sie die IP-Adresse mit der Methode ip2long in eine Ganzzahl umwandeln, kann bei einer großen IP eine negative Zahl erscheinen. Informationen zu Ursache und Lösung finden Sie in meinem anderen Artikel: „ Detaillierte Erörterung der Ursache und Lösung negativer Zahlen in php ip2long “ 4. Zusammenfassung 1. Speichern Sie die IP-Adresse im vorzeichenlosen int-Format in der Datenbank. Verwenden Sie beim Einfügen die Methode inet_aton, um die IP-Adresse in eine vorzeichenlose Ganzzahl umzuwandeln und so Speicherplatz zu sparen. 2. Verwenden Sie inet_ntoa, um die ganzzahlige IP-Adresse bei der Anzeige in eine Adresse umzuwandeln. 3. Wenn php ip2long IP in eine Ganzzahl umwandelt, müssen Sie auf negative Zahlen achten. Das obige Beispiel von MySQL, das inet_aton und inet_ntoa zur Verarbeitung von IP-Adressdaten verwendet, ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
>>: Einführung in die Linux-Dateikomprimierung und -Verpackung
Lösung zum Vergessen des MySQL-Passworts: [root@l...
Im Allgemeinen wird das Colspan-Attribut des <...
1. Stoppen Sie den MySQL-Dienst in der Befehlszei...
1. Hintergrund Wenn der Docker-Dienst gestartet w...
Ich habe einen Server, auf dem mehrere Docker-Con...
student.xml <?xml version="1.0" enco...
Inhaltsverzeichnis Als Attribut- und Eigenschafts...
Bevor die neue CSS-Eigenschaft „contain“ vorgeste...
Inhaltsverzeichnis 1. Problemszenario 2. Ursachen...
Tutorial zur kostenlosen Konfiguration der mysql ...
Hintergrund: Machen Sie jeden Tag ein wenig Forts...
Inhaltsverzeichnis Auswirkungen Dokumentation ers...
In diesem Artikel wird ein Nachrichtenfeld mit Sp...
In diesem Artikelbeispiel wird der spezifische JS...
20200804Nachtrag: Der Artikel könnte falsch sein....