Birisi IPv4 veya IPv6 üzerinden siteme bağlanır eğer php üzerinden kontrol etmek istiyorum.
Istemci adresi but nasıl IPv4 veya IPv6 olmadığını kontrol etmek için $ _SERVER ["REMOTE_ADDR"] bulunabilir?
Zaman ayırdığınız için teşekkür ederiz
Andre
Ne in '.'
ve / veya ':
' sayısını sayma $_SERVER["REMOTE_ADDR"]
?
Hiçbir '.
' sembolü orada fazla 0 ':
' ise ve $_SERVER["REMOTE_ADDR"]
, ben kullanıcı IPv6 üzerinden bağlanır size düşünebilirsiniz varsayalım.
Another solution might be to use the filter extension : there are constants (see the end of the page) that seem to be related to IPv4 and IPv6 :
FILTER_FLAG_IPV4
(integer)
Allow only IPv4 address in "validate_ip" filter.
FILTER_FLAG_IPV6
(integer)
Allow only IPv6 address in "validate_ip" filter.
En yüksek oyu cevabı oldukça önemli bir sorunu var, çünkü benim kendi paylaşmak için gidiyorum.
Bu IPv6 gibi görünen bir adres geçirilir ise true döndürür ve IPv4 (ya da IPv4 eşlenmiş IPv6) gibi görünen bir adres gerçek adresleri içeri geçti ise false fazla valide değildir; Eğer onları doğrulamak için gerekirse filter_var()
kullanın.
function is_ipv6($address) {
$ipv4_mapped_ipv6 = strpos($address, "::ffff:");
return (strpos($address, ":") !== FALSE) &&
($ipv4_mapped_ipv6 === FALSE || $ipv4_mapped_ipv6 != 0);
}