Heim > Backend-Entwicklung > PHP-Tutorial > So verwenden Sie inet_aton und inet_ntoa, um IP-Adressdaten über MySQL zu verarbeiten

So verwenden Sie inet_aton und inet_ntoa, um IP-Adressdaten über MySQL zu verarbeiten

jacklove
Freigeben: 2023-03-31 07:22:01
Original
1465 Leute haben es durchsucht

In diesem Artikel erfahren Sie, wie Sie mithilfe eines geeigneten Formats IP-Adressdaten in der Datenbank speichern und IP-Adressen bequem vergleichen können.

1. Speichern Sie die IP-Adresse in der Datenbank

Speichern Sie die IP-Adresse in der Datenbank:

`ip` char(15) NOT NULL,
Nach dem Login kopieren

Da die maximale Länge der IP-Adresse (255.255.255.255) 15 beträgt, ist die Verwendung von 15-Bit-Zeichen ausreichend.

Tabellenbenutzer erstellen

CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `ip` char(15) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Nach dem Login kopieren

Mehrere Daten einfügen

INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', '192.168.1.1'),
(3, 'Daisy', '172.16.11.66'),
(4, 'Christine', '220.117.131.12');
Nach dem Login kopieren

2.mysql inet_aton und inet_ntoa-Methode

MySQL bietet zwei Methoden zum Umgang mit IP-Adressen

inet_aton IP in vorzeichenlose Ganzzahl konvertieren Typ (4 -8 Ziffern)
inet_ntoa Ganzzahlige IP in elektrische Adresse umwandeln

Bevor Sie Daten einfügen, verwenden Sie inet_atonKonvertieren Sie die IP-Adresse in eine Ganzzahl, um Platz zu sparen, da char(15) 16 Bytes belegt.
Verwenden Sie beim Anzeigen von Daten inet_ntoa, um die ganzzahlige IP-Adresse zur Anzeige in eine elektrische Adresse umzuwandeln.

Beispiel:

CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `ip` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB;
Nach dem Login kopieren

Mehrere Daten einfügen

INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', inet_aton('192.168.1.1')),
(3, 'Daisy', inet_aton('172.16.11.66')),
(4, 'Christine', inet_aton('220.117.131.12'));
Nach dem Login kopieren
e

Die Abfrage wird als E-Mail-Adresse angezeigt

mysql> select * from `user`;
+----+-----------+------------+| id | name      | ip         |
+----+-----------+------------+|  2 | Abby      | 3232235777 |
|  3 | Daisy     | 2886732610 ||  4 | Christine | 3698688780 |
+----+-----------+------------+
Nach dem Login kopieren

3. Vergleichsmethode

Wenn Sie Benutzer in einem bestimmten Netzwerksegment (zum Beispiel: 172.16.11.1 ~ 172.16.11.100) herausfinden müssen, können Sie die ip2long-Methode von PHP verwenden, um die IP-Adresse in eine Ganzzahl umzuwandeln und dann zu vergleichen.

mysql> select id,name,inet_ntoa(ip) as ip from `user`;
+----+-----------+----------------+| id | name      | ip             |
+----+-----------+----------------+|  2 | Abby      | 192.168.1.1    |
|  3 | Daisy     | 172.16.11.66   ||  4 | Christine | 220.117.131.12 |
+----+-----------+----------------+
Nach dem Login kopieren

Abfrage:

<?php$ip_start = &#39;172.16.11.1&#39;;$ip_end = &#39;172.16.11.100&#39;;echo &#39;ip2long(ip_start):&#39;.sprintf(&#39;%u&#39;,ip2long($ip_start)); // 2886732545echo &#39;ip2long(ip_end):&#39;.sprintf(&#39;%u&#39;,ip2long($ip_end));     // 2886732644?>
Nach dem Login kopieren

Hinweis: Wenn Sie die ip2long-Methode verwenden, um die IP-Adresse in eine Ganzzahl umzuwandeln, für große Es wird negative Zahlen in der IP geben. Die Gründe und Lösungen finden Sie in meinem anderen Artikel: „Ursachen und Lösungen für negative Zahlen in PHP ip2long“

4

1. Speichern Sie die IP-Adresse im vorzeichenlosen int-Format in der Datenbank. Verwenden Sie beim Einfügen zunächst die Methode inet_aton, um die IP-Adresse in eine vorzeichenlose Ganzzahl umzuwandeln. 2. Verwenden Sie inet_ntoa, um die ganzzahlige IP-Adresse bei der Anzeige in eine elektrische Adresse umzuwandeln.
3. Bei der Konvertierung von ip2long in ip in einen Integer-Typ müssen Sie auf das Vorkommen negativer Zahlen achten.

In diesem Artikel wird erläutert, wie Sie mit inet_aton und inet_ntoa IP-Adressdaten über MySQL verarbeiten. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Verwandte Inhalte zur Verwendung der GZIP-Komprimierungsausgabe von PHP-JSON-Daten

So verwenden Sie http_build_query über PHP , parse_url, parse_str erstellt und analysiert URL

So implementieren Sie die Shake-Funktion über HTML5

Das obige ist der detaillierte Inhalt vonSo verwenden Sie inet_aton und inet_ntoa, um IP-Adressdaten über MySQL zu verarbeiten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage