Autor Zpráva
tester
Profil *
V manuálu PHP jsem našel funkce na převod mezi IP a long int jenže nikde jsem nenašel kolik paměti zabírá long int. Stačí mi 4 byty? Pokud ne tak proč v php nejsou funkce ip2int a int2ip?

Dále bych se vás chtěl zeptat kdy se očekává přechod na IPv6, řešíte ukládání adres v tomto tvaru nebo budete řešit teprve až bude třeba. 45 bytů a porovnávání tak dlouhých řetězců to bude asi záhul na servery oproti 4 bytovým adresám IPv4.
Alphard
Profil
PHP nemá jiný celočíselný datový typ než integer. Jeho rozsah závisí na operačním systému, viz konstanta PHP_INT_SIZE.
Na IPv6 se přechází už teď a počítám s tím už teď. Že by byl v typické aplikaci problém zrovna s tímto se nebojím.
Tomáš123
Profil
tester:
Adresy IPv4 sa už minuli. Nemusí to znamenať, že sa už nikde na svete nenachádza voľná IP adresa verzie 4, ale že vedúce organizácie už všetky adresy rozdelili.

Už začiatkom deväťdesiatych rokov sa začalo uvažovať o limitoch protokolu IP štvrtej verzie. Postupne sa prechádza na 128 bitové (16 bajtové) IP adresy verzie 6.
Martin2
Profil *
tester:
Hádám, že pro tebe neexistuje relevantní důvod převádět IP adresy na integery. Nebudeš počítat masky podsítí, rozsahy nebo něco takového, že ne?
tester
Profil *
takže mám na uložení použít VARCHAR(16) a zkrátit adresy tímto způsobem?
www.techrepublic.com/blog/10-things/10-things-you-should-know-about-ipv6-addressing
např
FE80:CD00:0000:0CDE:1257:0000:211E:729C
na FE80:CD00:0:CDE:1257:0:211E:729C

FE80:CD00:0000:0000:0000:0000:211E:729C
na FE80:CD00::211E:729C

Jaký na to použít regulární výraz?

IPv4 a IPv6 dávat do stejného sloupce? Př. můj server používá IPv4, ale pokud budu přecházet na jiný server který používá IPv6, budou se tam ukládat adresy v jiném formátu. Když budu ale zase testovat u sebe tak zase jedu v IPv6. Případně dát jeden sloupec který řekne v jakém formátu je IP adresa uložena?
Zechy
Profil
tester:
Je to jen můj dojem, ale řekl bych, že adresy nebude třeba zkracovat, jelikož lokálně ji dostávám již zkrácenou na ::1.
tester
Profil *
Ještě sem přidám jednu záhadu.

Nevíte proč se tento algoritmus zacykluje?

    $ip = ip2long("185.8.236.17");
    $c=0;
    while($ip):
        $count += ($ip & 1);
        $ip = $ip >> 1;
        echo " $ip ";
        $c++;
        if ($c > 11 ) die("");
    endwhile;



bez if ($c > 11 ) die("");
abc
Profil
Proč prostě nepoužiješ varchar(46) (viz stackoverflow.com/questions/166132/maximum-length-of-the-textual-representation-of-an-ipv6-address) a adresy neukládáš nezkrácené?
tester
Profil *
Proč ukládat tak dlouhé když se to vleze do 16bytů?? Jsou funkce jako inet_pton() ale mám starší verzi PHP které to nepodporují takže teď nevyzkouším.
abc
Profil
Já to vidím spíš obráceně - proč řešit max. 30 bytů rozdíl v komprimované/nekomprimované verzi...
I kdybys tam měl milion záznamů s maximální délkou, tak se jedná o ~30MB, které v dnešní době nejsou problém
tester
Profil *
Tady na stránce dole jsem narazil na zvláštní tvar adres IPv6:
ipv6.com/articles/general/IPv6-Addressing.htm
Když do prohlížeče zadám ::1/128 což by mělo odkazovat na 127.0.0.1 tak dostanu hlášku:

Omezení přístupu na port

Tato adresa obsahuje číslo portu, které je obvykle používáno k jiným účelům než prohlížení webových stránek. Z bezpečnostních důvodů Firefox tento požadavek zrušil.

To jako proč?
Davex
Profil
tester:
V případě IPv6 by správně mělo být URL s adresou v hranatých závorkách a bez masky takto: http://[::1]/.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0