några sidor på nätet om PHP programmering

Sök efter  
Börja här Uppgifter Testa dig själv Tips Sidokarta mm. Länkar Sök

Elpost Internet

1.15 Nätverk

I PHP finns det ett antal inbyggda funktioner för nätverk/internet. Vissa av dessa är mer av arten kontroll/konvertering, andra kan användas för filhantering över nätet.

checkdnsrr

checkdnsrr används för att kontrollera DNS för en server. OBS! Fungerar inte i Windows miljö, för NT/2000/XP finns en "workaround"

Det finns även en funktion: getmxrr som används för att kontrollera vilken mailserver en domain har. Det behöver inte vara samma som själva domännamnet. Observera att även checkdnsrr kan användas för MX kontroll, men den säger bara om domänen har en mail (MX), inte vilken dator som sköter om detta. Se mer i network *. Se även email typexemplet

<?php
    
# har inte nät hemma
    
error_reporting(0);
    

    
# TEST AV FUNKTIONERNA ------------------------------------
    
$testNames[] = "mail1.bet1.puv.fi";
    
$testNames[] = "puv.fi";
    
$testNames[] = "bet.puv.fi";
    
    for (
$i = 0; $i < count( $testNames ); $i++)
    {
        
# kompatibel version för hantering av både linux o win.
        # har du Linux så skriv:
        # man named
        # för mer info om DNS    
        
if ( checkdnsrr_compatible( $testNames[ $i ] ) )
            echo
$testNames[$i] . " domänen har en mailserver<br />";
        else
            echo
$testNames[$i] . " domänen har <b>inte</b> en mailserver<br />";
        if (
checkdnsrr_compatible( $testNames[ $i ] , "NS" ) )
            echo
$testNames[$i] . " är en nameserver (domain)<br />";
        else
            echo
$testNames[$i] . " är <b>inte</b> en nameserver (domain)<br />";
    }
    
# SLUT PÅ TEST AV FUNKTIONERNA -----------------------------


    # NEDANSTÅENDE FUNKTIONER UTFÖR KONTROLLEN --------------------------    
    
function checkdnsrr_compatible( $host, $type = 'MX' )
    {
        if (
strtoupper( substr( PHP_OS, 0, 3 ) == "WIN" ) )
        {
            
# checkdnserr finns inte i Windows
            # måste göra en egen...
            
return checkdnsrr_NT( $host, $type);
        }
        else
        {
            
# använd den inbyggda
            
return checkdnsrr( $host, $type );
        }
    }    
    
    
# Windows variant av checkdnsrr
    # Fungerar i NT4 / W2K /XP, men inte i W9x / ME
    # och andra leksaksoperativsystem
    
function checkdnsrr_NT( $host, $type = 'MX' )
    {
        if( !empty(
$host ) )
        {
            
#  använd nt:s nslookup program
            
@exec( "nslookup -type=$type $host", $output );
            while( list(
$k, $line ) = each( $output ) )
            {
                
# borde börja med ordet hosts
                
if( preg_match( "/^$host/i", $line ) )
                {
                    
# Hittade
                    
return true;
                }
            }
            return
false;
        }
    }
?>
Listning 1.15.1 - samples/s100.php
[Visa i separat fönster]

gethostbyaddr, gethostbyname och gethostbynamel

<?php
    
# gethostbyname ger ip för ett domännamn
    
echo "www.bet.puv.fi<br>&nbsp;&nbsp;";
    echo
gethostbyname("www.bet.puv.fi") . "<br>";
    
    
# gethostbyaddr ger domännamnet för en ip
    
echo "208.210.50.161<br>&nbsp;&nbsp;";
    echo
gethostbyaddr("208.210.50.161") . "<br>";
    
    
# hittas inget domän så returneras ip
    
echo "198.162.0.1<br>&nbsp;&nbsp;";
    echo
gethostbyaddr("198.162.0.1") . "<br>";
    
    
# vissa större domän har många ip adresser
    # gethostbynamel ger alla dessa i en array
    
$hosts = gethostbynamel("www.microsoft.com");
    echo
"<b>www.microsoft.com</b> har följande ip:<br>";
    foreach(
$hosts as $ind=>$ip)
        echo
"$ind : $ip<br>";
    
    echo
"Din ip är: <b>" . $_SERVER["REMOTE_HOST"] . "</b><br>";
    echo
"Och ditt domännamn är <b>";
    echo
gethostbyaddr( $_SERVER["REMOTE_HOST"] ) . "</b><br>";
?>
Listning 1.15.2 - samples/s101.php
[Visa i separat fönster]

 

   Börja härNätverk