Një aplikacion PHP u shërben Alice dhe Bob, dhe të dy përdorin klientin cURL në anën e serverit për të arritur të njëjtën faqe në distancë përmes një proxy. Nëse çdo kërkesë ngarkon cookies.txt, dy përdoruesit mund të trashëgojnë të njëjtin hyrje në distancë. Ndryshimi i adresave të tyre proxy nuk e ndan atë skedar.

Zgjidhni pronarin e cookie-s përpara se të zgjidhni emrin e skedarit. Zakonisht është sesioni logjik në distancë i aplikacionit: një përdorues lokal, një llogari e caktuar në distancë dhe, kur nevojitet, një hapësirë pune e veçantë. Pika fundore e proxy-t është një zgjedhje rrugëtimi, jo një identifikues i besueshëm sesioni. Disa përdorues mund të ndajnë një pikë fundore, dhe pika fundore mund të rrotullojë daljet.

Ngarko dhe ruaj kavanozin e të njëjtit sesion

Lëre aplikacionin të hartojë sesionin e tij të vërtetuar në një çelës skedari të gjeneruar nga serveri. Me një drejtori private cookie-sh dhe një $sessionKey të besueshëm, konfigurimi i cURL ka këtë formë:

$jar = $cookieDirectory . '/' . $sessionKey . '.cookies';

$ch = curl_init('https://service.example.net/account');
curl_setopt_array($ch, [
    CURLOPT_PROXY => 'http://proxy.example.net:8080',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEFILE => $jar,
    CURLOPT_COOKIEJAR => $jar,
]);

Për një test të lejuar sesioni në një faqe publike në një rrjet që lejon një ndërmjetës publik, lista e proxy-ve HTTP ofron pika fundore kandidate. Përdorni një dorezë pa vërtetim proxy të konfiguruar ose kredenciale proxy të mbajtura, dhe mbani gjendjen e cookie-ve të caktuar për sesionin e synuar. Ky fragment konfiguron një dorezë; aplikacioni kryen transferimin dhe kontrollon rezultatin përmes rrjedhës normale të kërkesave. COOKIEFILE ngarkon cookie-t e mëparshme të sesionit. COOKIEJAR zgjedh ku doreza shkruan cookie-t e mbajtura. Vendosja vetëm e skedarit të daljes nuk ngarkon hyrjen e mëparshme.

Një sesion i ri mund të fillojë pa skedar. Jepini transferimit të tij të parë shtegun e synuar të kavanozit, lëreni faqen të vendosë cookie-t dhe ruani gjendjen që rezulton për kërkesën tjetër. Drejtoria e cookie-ve duhet të jetë e shkruajtshme nga punëtori i aplikacionit dhe të mbahet jashtë pemës së dokumenteve të shërbyer publikisht. Mos e ktheni një emër përdoruesi ose shteg të dhënë nga vizitori në emër skedari; kërkoni çelësin e besueshëm në server.

Ruajtja kërkon një vend në ciklin e jetës së kërkesës

libcurl zakonisht shkruan kavanozin gjatë pastrimit të dorezës. Nëse aplikacionit i duhet një pikë e qartë ruajtjeje pas shkëmbimit në distancë, mund të kërkojë:

curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');

Kjo shkruan cookie-t që doreza njeh aktualisht në kavanozin e saj të konfiguruar. Përfundoni përdorimin e dorezës për atë sesion përpara se ta caktoni në punë të palidhur. Ndryshimi vetëm i shtegut të kavanozit në një dorezë që mban tashmë cookie-t e Alice nuk është e njëjtë me krijimin e sesionit të pastër të Bob.

Dalloni gjithashtu një shkarkim të suksesshëm nga një këmbëngulje e suksesshme. Dokumentacioni i kavanozit të cookie-ve vëren se një dështim shkrimi gjatë pastrimit nuk kthehet si gabim i zakonshëm transferimi. Kontrolloni pronësinë e drejtorisë, lejet dhe daljen diagnostike të aplikacionit kur një hyrje funksionon për një kërkesë dhe zhduket në tjetrën.

Kërkesat e njëkohshme sjellin një kufi tjetër. Dy punëtorë mund të ngarkojnë të njëjtin kavanoz të vjetër, të ndryshojnë në mënyrë të pavarur gjendjen e tyre në memorie dhe pastaj të ruajnë rezultate të ndryshme. Një bllokim për sesion ose serializim ekuivalent duhet të mbulojë të gjithë sekuencën e ngarkimit, shkëmbimit dhe ruajtjes nëse të dyja kërkesat ndajnë një hyrje në distancë; bllokimi vetëm i shkrimit përfundimtar nuk i pajton pamjet e tyre të mëparshme. Sesionet e ndryshme duhet të kenë skedarë të ndryshëm dhe bllokime të pavarura.

Në dalje, përfundoni sesionin e synuar në distancë dhe tërhiqni gjendjen e tij lokale të cookie-ve sipas politikës së aplikacionit. Një proxy i zgjedhur së fundmi mund të lidhet më pas me çdo sesion të ri që fillon përdoruesi, pa e bërë adresën e proxy-t përgjegjëse për të vendosur se kujt i është hyrja në memorie.

Artikuj të ngjashëm