Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie i odkodowywanie adresów IP
Forum PHP.pl > Forum > PHP
Michael2318
Witajcie!

Chciałbym u siebie w bazie kodować jakoś adresy IP, a przy tym mieć je krócej zapisane. Znalazłem w phpbb odpowiednie funkcje, które kodują adresy IP na 8 znaków, a potem spokojnie to odkodowywują.

  1. function encode_ip($dotquad_ip)
  2. {
  3. $ip_sep = explode('.', $dotquad_ip);
  4. return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
  5. }
  6.  
  7. function decode_ip($int_ip)
  8. {
  9. $hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
  10. return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
  11. }


Mój problem polega jednak na tym, że ta funkcja przepuszcza jedynie liczby oraz kropkę (.), a ja potrzebuję dorzucić tam jeszcze gwiazdkę (*), co oznaczać będzie losowy ciąg znaków, czyli jeśli zbanuję taki adres IP:
81.187.5* to każdy adres, posiadający taki przedrostek z automatu będzie banowany.
Czy możecie mi coś doradzić w tej kwestii? smile.gif Może jest jakaś inna funkcja, która spełni moje oczekiwania?

Pozdrawiam!
skowron-line
W mysql ładujesz IP w pole typu int
http://dev.mysql.com/doc/refman/5.0/en/mis...ction_inet-aton
i
dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton

i krócej się już chyba nie da
Michael2318
no tak, ale co ze wspomnianą gwiazdką? Taki zapis też przyjmie?
skowron-line
Cytat(Michael2318 @ 19.02.2013, 09:26:40 ) *
no tak, ale co ze wspomnianą gwiazdką? Taki zapis też przyjmie?

(mysql) INET_ATON == (php) ip2long
  1. $a = '127.0.0.*'; // 127.0.0.

niestety to dają puste wyniki, więc kicha.
Możesz sobie dorzucić w bazie drugą kolumne i wpisywać zakresy od - do
np
Kod
OD | DO
127.0.0.1 | 127.0.0.1
210.0.0.1 | 210.0.0.100

i sprawdzać betweenem w zapytaniu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.