PHP cURL cookie-poteak erabiltzaile-saio bereizietarako
PHP cURL cookieen iraunkortasuna saio urrunaren inguruan diseinatzea: fitxategi-izen fidagarriak, gordetze esplizitua eta aldi bereko eskaerak.
PHP aplikazio batek Alice eta Bob zerbitzatzen ditu, eta biek haren zerbitzari-aldeko cURL bezeroa erabiltzen dute proxy baten bidez urruneko webgune berera iristeko. Eskaera bakoitzak cookies.txt kargatzen badu, bi erabiltzaileek urruneko saio-hasiera bera hereda dezakete. Haien proxy helbideak aldatzeak ez du fitxategi hori bereizten.
Aukeratu cookiearen jabea fitxategi-izena aukeratu aurretik. Normalean aplikazioaren urruneko saio logikoa da: erabiltzaile lokal bat, urruneko kontu jakin bat eta, behar denean, lan-espazio bereizi bat. Proxyaren amaiera-puntua bideratze-aukeraketa da, ez saio-identifikatzaile fidagarria. Hainbat erabiltzailek amaiera-puntu bat parteka dezakete, eta amaiera-puntu batek irteerak txandaka ditzake.
Kargatu eta gorde saio beraren potea
Utzi aplikazioari bere saio autentifikatua zerbitzariak sortutako fitxategi-gako batera mapatzen. Cookie-direktorio pribatu batekin eta $sessionKey fidagarri batekin, cURL konfigurazioak forma hau du:
$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,
]);
Bitartekari publiko bat onartzen duen sarean baimendutako webgune publikoaren saio-proba baterako, HTTP proxy zerrendak hautagai amaiera-puntuak ematen ditu. Erabili proxy autentifikazio konfiguraturik edo gordetako proxy kredentzialik gabeko heldulekua, eta eutsi cookie-egoera bere saioari esleituta. Zati honek heldulekua konfiguratzen du; aplikazioak transferentzia egiten du eta emaitza bere eskaera-fluxu arruntaren bidez egiaztatzen du. COOKIEFILE saioaren aurreko cookieak kargatzen ditu. COOKIEJAR heldulekuak gordetako cookieak non idazten dituen hautatzen du. Irteera-fitxategia soilik ezartzeak ez du aurreko saio-hasiera kargatzen.
Saio berri bat fitxategirik gabe has daiteke. Eman bere lehen transferentziari potearen bidea, utzi webguneari cookieak ezartzen, eta gorde lortutako egoera hurrengo eskaerarako. Cookie-direktorioa aplikazioaren langileak idazteko modukoa izan behar da eta publikoki zerbitzatutako dokumentu-zuhaitzetik kanpo egon behar da. Ez bihurtu bisitariak emandako erabiltzaile-izena edo bidea fitxategi-izen; bilatu gako fidagarria zerbitzarian.
Gordetzeak lekua behar du eskaeraren bizi-zikloan
libcurl-ek normalean potea heldulekuaren garbiketan idazten du. Aplikazioak urruneko trukearen ondoren gordetze-puntu esplizitua behar badu, hau eska dezake:
curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');
Honek heldulekuak unean ezagutzen dituen cookieak bere pote konfiguratuan idazten ditu. Amaitu heldulekua saio horretarako erabiltzen, lan desberdin bat esleitu aurretik. Aliceen cookieak jada dituen helduleku batean potearen bide-izena soilik aldatzea ez da Boben saio garbia sortzearen baliokidea.
Bereizi deskarga arrakastatsua eta iraunkortasun arrakastatsua ere. Cookie-potearen dokumentazioak ohartarazten du garbiketan zehar gertatzen den idazketa-hutsegitea ez dela transferentzia-errore arrunt gisa itzultzen. Egiaztatu direktorioaren jabetza, baimenak eta aplikazioaren irteera diagnostikoa saio-hasiera eskaera baterako funtzionatzen duenean eta hurrengoan desagertzen denean.
Aldi bereko eskaerek beste muga bat sartzen dute. Bi langilek pote zaharra bera karga dezakete, independenteki aldatu beren memoriako egoera, eta gero emaitza desberdinak gorde. Saio bakoitzeko blokeoak edo baliokide den serializazioak karga, truke eta gordetze sekuentzia osoa estali behar du, bi eskaerek urruneko saio-hasiera bat partekatzen badute; azken idazketa soilik blokeatzeak ez ditu haien aurreko argazkiak adosten. Saio desberdinek fitxategi desberdinak eta blokeo independenteak izan beharko lituzkete.
Saioa ixtean, amaitu urruneko saioa eta erretiratu bere cookie-egoera lokala aplikazioaren politikaren arabera. Hautatutako proxy berria edozein saio berritara atxiki ahal izango da, proxy helbideak memorian nor dagoen saioa hasten duen erabaki beharrik gabe.