Omrežne funkcije nam omogočajo manipuliranje z informacijami, ki jih brskalniku pošlje spletni strežnik, preden je poslan kateri koli drug izhod. Zagotavlja obsežen nabor funkcij za mrežno programiranje, ki omogočajo delo z različnimi mrežnimi protokoli in storitvami. Tukaj so nekateri ključni koncepti in funkcije, ki se pogosto uporabljajo pri mrežnem programiranju.
PHP omogoča pridobivanje vsebine stran ali podatkov iz URL-jev z uporabo funkcij, kot so file_get_contents(), fopen(), fsockopen in cURL.
<?php $url = 'ajax_post.html'; $response = file_get_contents($url); if ($response !== FALSE) { echo "Vsebina URL-ja: " . $response; } else { echo "Prišlo je do napake pri pridobivanju vsebine."; }
Vsebina URL-ja: Dobrodošli na moji spletni strani! V njej boste našli vadnice o HTML, CSS, JavaScript, SQL in PHP, ostalo še prihaja.
cURL je zmogljiva knjižnica za delo z URL-ji in omogoča več možnosti konfiguracije in funkcionalnosti, kot so pošiljanje zahtevkov GET in POST, obdelava odzivov, upravljanje piškotkov in še več.
<?php $curl = curl_init(); /* vpisati moramo ime spletne strani, vpis same datoteke ne deluje (cURL napaka: Could not resolve host: ajax_post.html) */ curl_setopt($curl, CURLOPT_URL, 'https://imeDomene.si/'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); if ($response === FALSE) { echo "cURL napaka: " . curl_error($curl); } else { echo "Vsebina URL-ja: " . $response; } curl_close($curl);
PHP podpira nizkonivojsko mrežno programiranje z uporabo socket-ov, kar omogoča bolj neposreden nadzor nad mrežno komunikacijo. Spodnji program se ne ustavi, ker uporabljamo neskončno zanko while (true), kar je običajno za strežnike, saj želimo neprestano poslušati in obdelovati prihajajoče povezave. To je povsem normalno obnašanje strežnika. Če pa bi želeli, da se strežnik ustavi po določenem dogodku, lahko dodamo logiko znotraj neskončne zanke.
<?php $host = "127.0.0.1"; $port = 8081; $socket = socket_create(AF_INET, SOCK_STREAM, 0); if ($socket === FALSE) { echo "Napaka pri ustvarjanju socket: " . socket_strerror(socket_last_error()); exit; } $result = socket_bind($socket, $host, $port); if ($result === FALSE) { echo "Napaka pri vezavi socket: " . socket_strerror(socket_last_error($socket)); exit; } $result = socket_listen($socket, 5); if ($result === FALSE) { echo "Napaka pri poslušanju socket: " . socket_strerror(socket_last_error($socket)); exit; } echo "Strežnik posluša na {$host}:{$port}...\n"; while (true) { $client = socket_accept($socket); if ($client === FALSE) { echo "Napaka pri sprejemanju povezave: " . socket_strerror(socket_last_error($socket)); break; } $input = socket_read($client, 1024); if ($input === FALSE) { echo "Napaka pri branju podatkov: " . socket_strerror(socket_last_error($client)); socket_close($client); continue; } echo "Prejeto: " . $input . "\n"; // Če pa bi želeli, da se strežnik ustavi po določenem dogodku. // if (trim($input) === "STOP") { // echo "Prejet ukaz za ustavitev strežnika.\n"; // socket_close($client); // break; // Izhod iz neskončne zanke //} $response = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 30\r\n\r\nPozdravljeni iz PHP strežnika!"; socket_write($client, $response); socket_close($client); } socket_close($socket);
C:\xampp\php\php.exe -c C:\xampp\php\php.ini "C:\Users\" Strežnik posluša na 127.0.0.1:8081...
V primeru, da dobimo napako moramo iti v php.ini datoteko in izbrisati podpičje (;) v vrstici, ki vsebuje ;extension=sockets. Samo odstranimo podpičje (;) na začetku vrstice, da s tem omogočimo razširitev.
PHP ponuja funkcijo mail za pošiljanje e-pošte znotraj aplikacij.
<?php $to = 'uporabnik@primer.com'; $subject = 'Pozdrav iz PHP'; $message = 'To je testno sporočilo poslano z uporabo PHP.'; $headers = "From: webmaster@primer.com"; if (mail($to, $subject, $message, $headers)) { echo "E-pošta uspešno poslana."; } else { echo "Prišlo je do napake pri pošiljanju e-pošte."; }
Pomembne točke:
Mrežno programiranje v PHP omogoča ustvarjanje robustnih in zanesljivih spletnih aplikacij, ki lahko komunicirajo z drugimi omrežnimi storitvami in API-ji.