PHP

Kurz PHP (19.)

Úvodem  |  Kurz PHP |  Odkazy  |  Aplikace  |  Otázky a odpovědi

 

Síťové funkce

Může se stát, že budeme potřebovat vytvořit aplikaci, pracující se síťovými funkcemi. Pomocí integrovaných síťových funkcí můžeme například jednoduše zjišťovat jména, ip adresy atd. My si tyto jednotlivé funkce popíšeme a vysvětlíme si jejich význam.

FSockOpen

Pomocí této funkce se můžeme připojit k danému hostitely na daný port. Této funkce můžeme využít zejména tehdy, pokud budeme potřebovat získat údaje ze serveru, naslouchajícího na zvolené adrese a portu. Tímto serverem může být například HTTP, FTP a jiné servery.

Funkce se pokusí po daný timeout připojit na server a vrací deskriptor, se kterým můžeme pracovat, jako v případě souborových funkcí (viz díly dříve: fputs, fgets atd.).

     fsockopen(<adresa>, <port>, <errno>, <errstr>, <timeout>)
  • Adresa - IP adresa nebo doménové jmého hostitele, ke kterému se chceme připojit.
  • Port - číslo portu, na který se chceme u daného hostitele připojit.
  • Errno - představuje proměnnou, do které uloží číslo chyby v případě neúspěšného připojení.
  • Errstr - představuje proměnnou, do které uloží text chybové hlášky v případě neúspěšného připojení.
  • Timeout - představuje číselné vyjádření počtu sekund, po kterých se spojení ukončí.

<?
// Připojíme se k serveru www.seznam.cz
$fp = fsockopen("www.seznam.cz", 80, $err, $errstr, 20);
// V případě, že spojení skončí neúspěšně, zobrazíme chybové hlášení
if ($fp)
{
	// Odešleme http požadavek
	fputs($fp, "GET / HTTP/1.1\r\nHost: www.seznam.cz\r\n\r\n");
	// Budeme číst až do konce
	while (!feof ($fp))
	{
		// Do proměnné $data uložíme přečtený výsledek
		$data .= fgets($fp, 4096);
	}
	// Uzavřeme za sebou spojení
	fclose($fp);
	// A data následně zobrazíme
	echo $data;
}
else
{
	echo "Nastala chyba: $errstr - $err";
}

?>

GetHostByAddr

Pomocí této funkce můžeme zjistit doménové jméno počítače, podle zvolené IP adresy. Tuto funkci můžeme využít zejména v různých aplikacích, které zpracovávají jména přistupujících počítačů (například počítadla atd.). V případě neúspěchu vrací funkce zadanou IP adresu.

     gethostbyaddr(<ip adresa>)
  • Adresa - IP adresa hostitele, ke které chceme zjistit doménové jméno.

<?
// Zjistíme doménové jméno serveru 217.31.49.13
echo gethostbyaddr("217.31.49.13");

// Zjistíme doménové jméno návštěvníka
echo gethostbyaddr("<br>" . $_SERVER['REMOTE_ADDR']);
?>

GetHostByName

Pomocí této funkce můžeme zjistit IP adresu počítače, podle zadaného doménového jména. Tuto funkci můžeme opět využít zejména v různých aplikacích, které zpracovávají jména přistupujících počítačů (například počítadla atd.).

     gethostbyname(<doménové jméno>)
  • Doménové jméno - doménové jméno počítače, ke které chceme zjistit IP adresu.

<?
// Zjistíme IP adresu serveru www.aspweb.cz
echo gethostbyname("www.aspweb.cz");

// Zjistíme IP adresu návštěvníka
echo gethostbyname("<br>" . $_SERVER['REMOTE_HOST']);
?>

GetHostByNamel

Pomocí této funkce můžeme zjistit pole IP adres počítače, podle zadaného doménového jména.

     gethostbynamel(<doménové jméno>)
  • Doménové jméno - doménové jméno počítače, ke které chceme zjistit IP adresy.

<?
// Zjistíme IP adresy serveru www.seznam.cz
print_r(gethostbynamel("www.seznam.cz"));

// Výsledkem bude
/*
Array
(
    [0] => 212.80.76.18
    [1] => 212.80.76.3
)
*/
?>

IP2Long

Pomocí této funkce můžeme převést zvolenou IP adresu na síťovou IPv4 adresu. Pro zjištění správné, nezáporné hodnoty je potřeba výsledek této funkce převést pomocí funkce sprintf s formátem "%u".

     ip2long(<IP adrea>)
  • Doménové jméno - doménové jméno počítače, ke které chceme zjistit IP adresy.

<?
// Zobrazíme síťovou adresu
echo sprintf("%u", ip2long("127.0.0.1");
?>

Long2IP

Tato funkce je opakem funkce ip2long, která vrací IP adresu podle zvolené síťové IP adresy.

     ip2long(<síťová adresa>)
  • Síťová adresa - zvolená síťová adresa.

<?
// Zobrazíme IP adresu
echo long2ip("2130706433");
?>

PFSockOpen

Tato funkce je podobná funci FSockOpen, avšak vytvoří tzv. perzistentní spojení. Spojení se po ukončení skriptu neuzavře. Tuto funkci musí poskytovatel podporovat (mít povolenu) a samozřemě ji musí podporovat i daný server, ke kterému se připojujeme.

     pfsockopen(<adresa>, <port>, <errno>, <errstr>, <timeout>)
  • Adresa - IP adresa nebo doménové jmého hostitele, ke kterému se chceme připojit.
  • Port - číslo portu, na který se chceme u daného hostitele připojit.
  • Errno - představuje proměnnou, do které uloží číslo chyby v případě neúspěšného připojení.
  • Errstr - představuje proměnnou, do které uloží text chybové hlášky v případě neúspěšného připojení.
  • Timeout - představuje číselné vyjádření počtu sekund, po kterých se spojení ukončí.

 

Závěr

V dnešní části jsme si ukázali práci s několika mnohdy důležitými funkcemi, které se nám určitě někdy budou hodit.

 

Pro tento díl to bude vše. V příštím díle budeme dále pokračovat v poznávání jazyka PHP.

 

Petr Rympler