|
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;
}
}
?>
gethostbyaddr, gethostbyname
och gethostbynamel
<?php
# gethostbyname ger ip för ett domännamn
echo "www.bet.puv.fi<br> ";
echo gethostbyname("www.bet.puv.fi") . "<br>";
# gethostbyaddr ger domännamnet för en ip
echo "208.210.50.161<br> ";
echo gethostbyaddr("208.210.50.161") . "<br>";
# hittas inget domän så returneras ip
echo "198.162.0.1<br> ";
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>";
?>
|