gethostbyname IPv6

En tråd i 'PHP, SQL og databaser' startet av kongen, 6 Mai 2015.

  1. kongen

    kongen kongemedlem

    Innlegg:
    2.746
    gethostbyname virker visst bare på IPv4 ip'er, hva skal man gjøre hvis det er IPv6 adresser?
     
  2. thomasstr

    thomasstr Medlem

    Innlegg:
    156
    Kjapt søk på Google gav med dette. Testet og funker,


    PHP:
    <?php
    function gethostbyname6($host$try_a false) {
            
    // get AAAA record for $host
            // if $try_a is true, if AAAA fails, it tries for A
            // the first match found is returned
            // otherwise returns false

            
    $dns gethostbynamel6($host$try_a);
            if (
    $dns == false) { return false; }
            else { return 
    $dns[0]; }
        }

        function 
    gethostbynamel6($host$try_a false) {
            
    // get AAAA records for $host,
            // if $try_a is true, if AAAA fails, it tries for A
            // results are returned in an array of ips found matching type
            // otherwise returns false

            
    $dns6 dns_get_record($hostDNS_AAAA);
            if (
    $try_a == true) {
                
    $dns4 dns_get_record($hostDNS_A);
                
    $dns array_merge($dns4$dns6);
            }
            else { 
    $dns $dns6; }
            
    $ip6 = array();
            
    $ip4 = array();
            foreach (
    $dns as $record) {
                if (
    $record["type"] == "A") {
                    
    $ip4[] = $record["ip"];
                }
                if (
    $record["type"] == "AAAA") {
                    
    $ip6[] = $record["ipv6"];
                }
            }
            if (
    count($ip6) < 1) {
                if (
    $try_a == true) {
                    if (
    count($ip4) < 1) {
                        return 
    false;
                    }
                    else {
                        return 
    $ip4;
                    }
                }
                else {
                    return 
    false;
                }
            }
            else {
                return 
    $ip6;
            }
        }
    ?>
     
    kongen liker dette.
  3. kongen

    kongen kongemedlem

    Innlegg:
    2.746
    Takk takk, dette må jeg prøve :)
     

Del denne siden