kojp
V2EX  ›  问与答

how to get user's ipv6 address by PHP????

  •  
  •   kojp · Jul 14, 2011 · 27325 views
    This topic created in 5449 days ago, the information mentioned may be changed or developed.
    Quote Originally Posted by mmjanjust View Post
    hi all,
    how to get user's ipv6 address by php ?
    the same way as ipv4
    using $_SERVER['REMOTE_ADDR']

    if that variable contains ipv4 address it means that client doesnt have ipv6, your server has missconfigured ipv6, your webserver doesnt have ipv6 support, your domain doesnt have aaaa record or if your site got both ipv4 and ipv6 address and everything is configured properly then most likely clients primary routing is via ipv4 (which is unusual but also might happen - might be forced by client or clients isp).
    13 replies    1970-01-01 08:00:00 +08:00
    kojp
        1
    kojp  
    OP
       Jul 14, 2011
    GOOGLE 了。。。有人给了一段转换函数,试了一下。。不靠谱呀。。。
    究竟如何才能获取呢??
    kojp
        2
    kojp  
    OP
       Jul 14, 2011
    又GOOGLE 了一会儿。。。是不是有这么个情况?用的还是同一个函数

    $_SERVER['REMOTE_ADDR']

    但是,服务器也得有相关的IPV6设置??
    CoX
        3
    CoX  
       Jul 14, 2011
    先确定自己的服务器是不是支持ipv6吧,如果服务器不支持,是获取不到user ipv6地址的(应该根本不能访问)
    kojp
        4
    kojp  
    OP
       Jul 14, 2011
    @CoX

    谢谢。。。我猜出大概也是这么个情况。

    可是如何确定呢?服务器是本机,XP搭的一个APACHE+PHP+MYSQL环境。已经有ipv6地址了。。也可以ping6 ipv6.google.com

    C:\Documents and Settings\Administrator>ping6 ipv6.google.com

    Pinging ipv6.l.google.com [2404:6800:8005::69]
    from 2001:da8:4004:125:d5a1:9e05:45e1:c67e with 32 bytes of data:


    剩下的。。如何确认?谢谢。。。
    CoX
        5
    CoX  
       Jul 14, 2011
    @kojp 不是能ping6就是支持,你用浏览器直接访问 ipv6.google.com 看能访问不?能访问才说明你有ipv6的地址
    kojp
        6
    kojp  
    OP
       Jul 15, 2011
    可以正常访问。。。。

    $_SERVER['REMOTE_ADDR']可是这个函数,真获取不到IPV6的地址呀。。。
    而且 我的要求是,同时获取IPV6和IPV4。。。。PUZZLED~~~~~~TAT
    CoX
        7
    CoX  
       Jul 15, 2011
    @kojp 我测试了一下,真的可以,呵呵~~

    _SERVER["REMOTE_ADDR"] 2406:a000:f0ff:fffe::3ff7
    _SERVER["REMOTE_PORT"] 59952
    _SERVER["SERVER_ADDR"] 2406:a000:f0ff:fffe::3ff3
    _SERVER["SERVER_PORT"] 80
    _SERVER["SERVER_NAME"] localhost
    _SERVER["REDIRECT_STATUS"] 200
    _SERVER["HTTP_HOST"] [2406:a000:f0ff:fffe::3ff3]

    应该不能同时获取到ipv6和ipv4的,我理解是服务端绑定ipv4和ipv6的话,客户端同时支持ipv4和ipv6,只能显示一个ipv6(猜想,未测试),否则客户端支持哪个,就显示哪个。
    kojp
        8
    kojp  
    OP
       Jul 15, 2011
    @Cox
    不明白。。。你这不是两个ADDR都是IPv6的地址吗?没有IPv4呀?
    另:iis6 也好。。Apache也好。。我还是没能成功获取ipv6地址~~~郁闷中!!!
    kojp
        9
    kojp  
    OP
       Jul 15, 2011
    @Cox
    服务端绑定ipv4和ipv6的话-----------如何绑定?
    “Apache需要一个补丁包。。。IIS貌似不需要任何设置只需要安装了ipv6 install 协议就可以呀。。。。”------------反正我都测试失败!!
    CoX
        10
    CoX  
       Jul 15, 2011
    我用的nginx,ferdora 8环境。
    nginx 相关配置:

    listen 192.168.1.101:80;#IPv4

    listen [2406:a000:f0ff:fffe::3ff3]:80;#IPv6

    server_name localhost;# 域名

    应该不能同时获取到ipv4和ipv6地址
    kojp
        11
    kojp  
    OP
       Jul 20, 2011
    @cox

    方便留个邮箱不?
    CoX
        12
    CoX  
       Jul 21, 2011
    kojp
        13
    kojp  
    OP
       Jul 22, 2011
    @cox 已经搞定。。哈哈。。谢谢。邮箱记下了。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5577 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 07:27 · PVG 15:27 · LAX 00:27 · JFK 03:27
    ♥ Do have faith in what you're doing.