V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kojp
V2EX  ›  问与答

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

  •  
  •   kojp · 2011-07-14 17:36:48 +08:00 · 26492 次点击
    这是一个创建于 4668 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    1970-01-01 08:00:00 +08:00
    kojp
        1
    kojp  
    OP
       2011-07-14 17:37:36 +08:00
    GOOGLE 了。。。有人给了一段转换函数,试了一下。。不靠谱呀。。。
    究竟如何才能获取呢??
    kojp
        2
    kojp  
    OP
       2011-07-14 17:46:24 +08:00
    又GOOGLE 了一会儿。。。是不是有这么个情况?用的还是同一个函数

    $_SERVER['REMOTE_ADDR']

    但是,服务器也得有相关的IPV6设置??
    CoX
        3
    CoX  
       2011-07-14 18:11:43 +08:00
    先确定自己的服务器是不是支持ipv6吧,如果服务器不支持,是获取不到user ipv6地址的(应该根本不能访问)
    kojp
        4
    kojp  
    OP
       2011-07-14 18:15:41 +08:00
    @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  
       2011-07-14 18:19:44 +08:00
    @kojp 不是能ping6就是支持,你用浏览器直接访问 ipv6.google.com 看能访问不?能访问才说明你有ipv6的地址
    kojp
        6
    kojp  
    OP
       2011-07-15 09:10:51 +08:00
    可以正常访问。。。。

    $_SERVER['REMOTE_ADDR']可是这个函数,真获取不到IPV6的地址呀。。。
    而且 我的要求是,同时获取IPV6和IPV4。。。。PUZZLED~~~~~~TAT
    CoX
        7
    CoX  
       2011-07-15 10:33:12 +08:00
    @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
       2011-07-15 11:36:23 +08:00
    @Cox
    不明白。。。你这不是两个ADDR都是IPv6的地址吗?没有IPv4呀?
    另:iis6 也好。。Apache也好。。我还是没能成功获取ipv6地址~~~郁闷中!!!
    kojp
        9
    kojp  
    OP
       2011-07-15 11:37:44 +08:00
    @Cox
    服务端绑定ipv4和ipv6的话-----------如何绑定?
    “Apache需要一个补丁包。。。IIS貌似不需要任何设置只需要安装了ipv6 install 协议就可以呀。。。。”------------反正我都测试失败!!
    CoX
        10
    CoX  
       2011-07-15 12:28:05 +08:00
    我用的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
       2011-07-20 17:50:39 +08:00
    @cox

    方便留个邮箱不?
    CoX
        12
    CoX  
       2011-07-21 13:14:28 +08:00
    kojp
        13
    kojp  
    OP
       2011-07-22 10:01:31 +08:00
    @cox 已经搞定。。哈哈。。谢谢。邮箱记下了。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5092 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:51 · PVG 11:51 · LAX 20:51 · JFK 23:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.