Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ipv6 a przechowywanie w mysql
reyder
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 2.03.2011

Ostrzeżenie: (0%)
-----


Witam. Jako, że myślę przyszłościowo to zastanawiam się nad ipv6 i napotkałem dość poważny problem. Mianowicie zastanawiam się jak przechowywać ipv6 w tabeli mysql. Zastanawiałem się nad 2-bigint, wtedy ipv6 zajmowało by drugą kolumnę biginta i łatwo było by rozróżnić jakie ip ma użytkownik, ale po dłuższym zastanowieniu jest to bardzo nie wygodne rozwiązanie. Drugi pomysł to przechowywanie w varchear, to chyba nie zbyt wydajny sposób, a trzeci to przechowywanie w postaci binarnej. Według mnie to najlepsze rozwiązanie. Zawadza mi tylko jeszcze jeden problem, że połowa adresów będzie ipv4 a druga połowa ipv6. Nie da się przekonwertować ipv4 użytkownika na wersje ipv6 i dopiero uaktualniać w bazie danych ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
reyder
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 2.03.2011

Ostrzeżenie: (0%)
-----


Znalazłem fajną funkcję która od razu przekształca mi ipv4 na ipv6
  1. function IPv4To6($Ip) {
  2. static $Mask = '::ffff:'; // This tells IPv6 it has an IPv4 address
  3. $IPv6 = (strpos($Ip, '::') === 0);
  4. $IPv4 = (strpos($Ip, '.') > 0);
  5. if (!$IPv4 && !$IPv6) return false;
  6. if ($IPv6 && $IPv4) $Ip = substr($Ip, strrpos($Ip, ':')+1); // Strip IPv4 Compatibility notation
  7. elseif (!$IPv4) return $Ip; // Seems to be IPv6 already?
  8. $Ip = array_pad(explode('.', $Ip), 4, 0);
  9. if (count($Ip) > 4) return false;
  10. for ($i = 0; $i < 4; $i++) if ($Ip[$i] > 255) return false;
  11.  
  12. $Part7 = base_convert(($Ip[0] * 256) + $Ip[1], 10, 16);
  13. $Part8 = base_convert(($Ip[2] * 256) + $Ip[3], 10, 16);
  14. return $Mask.$Part7.':'.$Part8;
  15. }


Połączę to jeszcze z funkcją pozyskujące ip i będe miał wszystkie wychodzące jako ipv6 i w takim formacje chcę je zapisać w bazie. Tylko teraz pytanie jak ?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 18:51