Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

Úgy döntöttem, készítek magamnak egy csalólapot a webszerverről történő adatküldés és -fogadás fő módszereiről php és js használatával. És így született meg ez a jegyzet. Ebben áttekintettem a webes kliens és a webszerver közötti adatcsere leggyakrabban használt módszereit, amelyeket a php fejlesztők használnak.

Az adatküldés legnagyobb kedvencei a php get request és a php post request, ezt követi az AJAX technológia. Tehát mi a különbség a fogadási és a postázási kérelmek között.

  • A get kérés a címsorba kerül (a http fejlécben), és látható a felhasználó számára
  • a postázási kérés a dokumentum törzsében kerül átadásra
  • a lekérési kérelem mérete korlátozott (maximum 276 karakter)
  • get metódus nem visz át fájlokat
  • post módszer fájlokat tölt fel
php kérést kap

A php get kéréshez először létre kell hoznunk html űrlap adatbeviteli mezővel. Az űrlapcímkében jelezzük, hogy a szerveren melyik fájlt kell elérni, és milyen módszerrel kell elküldeni. Ne felejtse el beállítani a mezőt sem név attribútum, ez lesz a tömbcella neve GET $_GET["adat"]; ahonnan az adatokat egy fájlba kapjuk a szerveren. Az űrlapon keresztül a get data küldése szerintem egyértelmű, most próbáljuk meg átadni címsor. index.php?data=1 ha beírunk egy ilyen kérést a címsorba és elküldjük, akkor az index.php-ben lévő fájlban a $_GET["data"]-ból kapjuk az 1-es értéket.Ezzel szerintem minden világos, most egy példa.

Feladat: van egy index.php fájl egy űrlappal a get kérés másik fájlba küldésére, például get.php. Amikor get kérés érkezik, a get.php fájlnak át kell adnia egy adattömböt az index.php-nek. Az index.php fájlban az eredményül kapott tömbnek meg kell jelennie.

Végrehajtás. index.php fájl

//Az űrlapon a get metódussal küldje el az 1-es értéket a rejtett Kérés küldése mezőn keresztül

get.php fájl

php post kérés

A php post kérés is átkerül az űrlapon, csak a form tag attribútuma a method="post" lesz. És megkapjuk a megadott fájlban lévő adatokat a $_POST["search"] tömbből, és azonnal példát adunk.

Feladat: küldjön adatokat az index.php-ről POST metódussal a szerverre a get.php fájlba és kapja vissza, ha az adatküldés mező üres, jelenítsen meg egy üzenetet az üres mezőről. Kezdjük a megoldást az index.php-vel

Keresési lekérdezés

Töltse ki a kérés mezőt

Beírt kérés:

Nyújtsa be érdeklődését

get.php fájl

AJAX tömb átadása

Végezzük el ugyanezt a feladatot ajax-szal. Az ajax általában a javascripthez kapcsolódó technológia, de a szerverre való adatátvitelről szóló megjegyzés részeként kitérünk erre a technológiára is. Természetesen az ajax egy külön cikk témája. A kérés során a GIF betöltésjelzőt is megjelenítjük. Két fájlunk is van: index.php és get.php. index.php fájl. Ne felejtse el beilleszteni a jquery-t. Figyelem, a gif elrejtéséhez az első oldal betöltéskor rendelje hozzá a megjelenítési stílust: none a doboz blokkhoz

$(document).ready(function()( //akassz fel egy eseményt a küldés gombra $(.submit").click(function()( $.ajax(( //hogyan küldjük el az adattípust: "GET) ", / /ahova url-t adunk át: "get.php", //milyen adatokat adunk át: (jelző: 1), //event ajax küldése előtt beforeSend: function()( //display GIF $().box ").show( ); ), //event a válasz beérkezése után, //a tömb elérése sikeres adat esetén: function(data)( //elrejti a GIF-et $(".box").hide(); var html = ""; //f- i JSON.parse lefordítja a JSON adatokat a var dt=JSON.parse(data) objektummá; for (var i = 0; i

get.php fájl. A get tömbből adatokat kapunk a fájlba, és átadjuk a tömböt php-ről javascriptre. Mit kell közvetíteni php tömb js-ben json formátumba kell konvertálni. Erre használjuk php json_encode. Az átalakítás után a json elküldésre kerül php azt jelenti, és konkrétan visszhangnak hívjuk.

A PHP POST kérésének első módja a file_get_contents használata. A második módszer a freadet néhány más funkcióval kombinálva fogja használni. Mindkét lehetőség a stream_context_create függvényt használja a kérésfejléc szükséges mezőinek kitöltéséhez.

Kód magyarázata

Az $sPD változó tartalmazza a küldendő adatokat. HTTP kérési karakterlánc formátumban kell lennie, így néhány Különleges szimbólumok kódolni kell.

Mind a file_get_contents, mind a fread függvényben két új paraméterünk van. Az első a use_include_path . Mivel HTTP kérést végzünk, mindkét példában ez lesz hamis. Ha a true értéket használja egy helyi erőforrás olvasásához, a függvény egy fájlt keres az include_path címen.

A második paraméter, a context , a stream_context_create visszatérési értékével van feltöltve, amely az $aHTTP tömb értékét veszi fel.

A file_get_contents használata POST-kérésekhez

PHP-ben a file_get_contents használatával POST-kérés küldéséhez a stream_context_create segítségével manuálisan kell kitöltenie a fejlécmezőket, és meg kell adnia, hogy melyik "burkolót" használja - in ez az eset http:

$sURL = "http://brugbart.com/Példák/http-post.php"; // POST URL $sPD = "name=Jacob&bench=150"; // POST adatok $aHTTP = array("http" => // Használandó wrapper array("method" => "POST", // Kérési metódus // A kérés fejlécei a "header" alatt vannak beállítva => "Tartalom- típus: application/x-www-form-urlencoded", "content" => $sPD)); $kontextus = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $kontextus); echo $tartalom;

Fread használata POST kérések küldésére

A fread funkció segítségével POST kéréseket küldhet. A következő példa a stream_context_create paramétert használja a szükséges HTTP-kérelem fejlécek összeállításához:

$sURL = "http://brugbart.com/Példák/http-post.php"; // POST URL $sPD = "name=Jacob&bench=150"; // POST adatok $aHTTP = array("http" => // Használandó wrapper array("method" => "POST", // Request Method // A kérés fejlécei a "header" alatt vannak beállítva => "Tartalom- típus: application/x-www-form-urlencoded", "content" => $sPD)); $kontextus = stream_context_create($aHTTP); $handle = fopen($sURL, "r", false, $kontextus); $contents = ""; while (!feof($handle)) ( $contents .= fread($handle, 8192); ) fclose($handle); echo $tartalom;

GET kérések készítése PHP-vel

Most figyelmünket a fread és file_get_contents használatára fordítjuk tartalom letöltésére az internetről HTTP és HTTPS-en keresztül. A cikkben leírt módszerek használatához engedélyezni kell az fopen wrappers beállítást. Ehhez a php.ini fájlban az allow_url_fopen paramétert On értékre kell állítani.

A PHP POST és GET kérések a webhelyekre való bejelentkezésre, a weboldal tartalmának lekérésére vagy az alkalmazások új verzióinak ellenőrzésére szolgálnak. Leírjuk, hogyan lehet egyszerű HTTP kéréseket készíteni.

Fread használata fájlok letöltésére vagy fogadására az interneten keresztül

Ne feledje, hogy egy weboldal olvasása a csomag elérhető részére korlátozódik. Tehát érdemes a stream_get_contents függvényt használni (hasonlóan a file_get_contents-hez), ill. míg hurok a tartalom kisebb részekben történő olvasásához, amíg el nem éri a fájl végét:

Ebben az esetben egy PHP POST kérés feldolgozásakor a fread függvény utolsó argumentuma megegyezik a töredék méretével. Általában nem lehet nagyobb, mint 8192 (8*1024).

Van egy URL-struktúrám egy lekérdezési karakterlánccal és egy pozíció nevű paraméterrel,

http://computerhelpwanted.com/jobs/?occupation=administrator&position=network+administrator

Van egy űrlapkiválasztó legördülő listám is az űrlapválasztó név pozíciójával.

Válassza ki a Foglalkozás rendszergazdáját Válassza a Hálózati adminisztrátor pozícióját

Amikor a felhasználó kiválaszt egyet, elküldi az opcióértékeket az action attribútumnak a select name="position" paraméterrel a lekérdezési karakterláncban használandó paraméterként.

A kérdésem az, hogy hogyan érhetem el az űrlapkiválasztó értékeket a lekérdezési karakterlánc értékektől elkülönítve?

A _GET metódus segítségével hívom meg az értéket egy lekérdezési karakterlánc paraméterből.

$pozíció = isset($_GET["pozíció"]) ? ($_GET["pozíció"]) : "";

Nyilvánvaló, hogy ez az értéket az URL-struktúrából kapja, nem az űrlapelemből. Vagy talán az, nem biztos. De a teszteléssel arra a következtetésre jutottam, hogy url-en kapja meg, nem pedig űrlap alapján.

Hogyan érhetem el az űrlapkiválasztás értékét a PHP-ben történő összehasonlítás során?

Frissítés

Problémám van a fejlécben megadott kanonikus URL-lel.

Ennek így kell lennie

az egyetlen különbség a - és a + jel a lekérdezési karakterláncban.

Nem minden lekérdezési karakterláncban van +. Vannak, akiknek -. De mindkét URL-en megjelenítek tartalmat, függetlenül attól, hogy van - vagy +. Akárhogy is, mindkét URL ugyanazt az oldaltartalmat kapja.

De mivel a kanonikus karaktert dinamikusan az URI-ból és nem az űrlapelem értékéből állítják elő, mindkét tartalomoldalon 2 különböző kanonikus karakter található.

A _Get('value') használata az értéket a lekérdezési karakterláncból kéri le az űrlapelem helyett. Ezt azért tudom, mert az űrlap elem értéke között van egy szóköz a hálózati adminisztrátor között, amely urlenkódot kap, amikor az űrlapot hálózat+adminisztrátor néven küldi el, tehát ha össze tudom hasonlítani az űrlap elem értékével, be tudom állítani a megfelelő kanonikust.

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: