如何在网页上分别打印 IPv4 和 IPv6

问题描述

这个文件在我的网站上,每次我或客户端运行时,我们都会得到公共 IP 地址。由于我在我的服务器中启用了 IPv6,如果客户端有公共 IPv6,它会显示给他,否则他会看到他的 IPv4。

#!/home/path/virtualenv/folder/3.7/bin//python
print ("Content-type: text/html\n\n")
print('<title>IP | DOMAIN</title>')

import os
ip = os.environ["REMOTE_ADDR"]

ip2 = ('Your IP is: <span style=\'color:red;font-weight:bold;\'>{}</span>'.format(ip))
print(ip2)

据我所知,REMOTE_ADDR 向客户端显示是 IPv6 还是 IPv4,具体取决于客户端使用的是哪一个

我想要的是分别显示这两个IP,像这样:

如果他有 IPv4,则显示 your ipv4 is: {ipv4}

如果他有 IPv6,则显示 your ipv6 is: {ipv6}

由于所有客户端至少有一个,所以应该有两个 if 条件。

我想要像 https://whatismyipaddress.com/ 这样的东西,它可以同时显示 IPv4 和 IPv6。

解决方法

public function bobot()
{
    $this->db->select('nama_kriteria,bobot,count(id_kriteria) as jumlah');
    $this->db->from('tb_kriteria');
    $this->db->group_by('id_kriteria');
    $query = $this->db->get();
    return $query->result();
}

给定示例的输出是:

from ipaddress import ip_address,IPv4Address
  
def validIPAddress(IP: str) -> str:
    try:
        return "IPv4" if type(ip_address(IP)) is IPv4Address else "IPv6"
    except ValueError:
        return "Invalid"
  
if __name__ == '__main__' :  
        
    # Enter the Ip address 
    Ip = "192.168.0.1"
    print(validIPAddress(Ip)) 
  
    Ip = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
    print(validIPAddress(Ip)) 
  
    Ip = "256.32.555.5"
    print(validIPAddress(Ip))  
  
    Ip = "250.32:555.5"
    print(validIPAddress(Ip))

通过这种方式,您可以使用该方法来创建要显示的字符串,并将该方法用于其他用途:)