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