PHP cURL-i küpsisepurgid eraldi kasutajaseansside jaoks
PHP cURL-i küpsiste püsivuse kujundamine ümber kaugseansi: usaldusväärsed failinimed, selgesõnaline salvestamine ja samaaegsed päringud.
PHP rakendus teenindab Alice'i ja Bobi ning mõlemad kasutavad selle serveripoolset cURL-kliendit, et jõuda puhverserveri kaudu samale kaugveebisaidile. Kui iga päring laadib cookies.txt, võivad kaks kasutajat pärida sama kaugsisselogimise. Nende puhveraadresside muutmine ei eralda seda faili.
Valige küpsise omanik enne failinime valimist. Tavaliselt on see rakenduse loogiline kaugseanss: kohalik kasutaja, konkreetne kaugkonto ja vajaduse korral eraldi tööruum. Puhverserveri lõpp-punkt on marsruudivalik, mitte usaldusväärne seansiidentifikaator. Mitu kasutajat võivad ühte lõpp-punkti jagada ja lõpp-punkt võib väljundeid pöörata.
Laadi ja salvesta sama seansi purk
Lase rakendusel vastendada oma autenditud seanss serveri loodud failivõtmega. Privaatse küpsiseteegikonna ja usaldusväärse $sessionKey korral on cURL-i konfiguratsioon selline:
$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,
]);
Avalikku vahendajat lubavas võrgus avaliku saidi lubatud seansitesti jaoks pakub HTTP puhverserverite loend kandidaatlõpp-punkte. Kasutage pidemikku, millel pole seadistatud puhverserveri autentimist ega hoitud puhverserveri mandaate, ja hoidke küpsise olek selle kavandatud seansile määratud. See fragment seadistab pidemikku; rakendus teostab ülekande ja kontrollib tulemust oma tavapärase päringuvoo kaudu. COOKIEFILE laadib seansi varasemad küpsised. COOKIEJAR valib, kuhu pidemik oma hoitud küpsised kirjutab. Ainult väljundfaili seadistamine ei laadi varasemat sisselogimist.
Uus seanss võib alata ilma failita. Anna selle esimesele ülekandele kavandatud purgi tee, lase veebisaidil küpsised luua ja salvesta saadud olek järgmise päringu jaoks. Küpsiseteegikond peab olema rakenduse töötaja poolt kirjutatav ja jääma avalikult teenindatavast dokumendipuust välja. Ära muuda külastaja esitatud kasutajanime ega teed failinimeks; otsi usaldusväärne võti serverist.
Salvestamine vajab kohta päringu elutsüklis
libcurl kirjutab purgi tavaliselt pidemiku puhastamise ajal. Kui rakendus vajab pärast kaugvahetust selgesõnalist salvestuspunkti, võib see taotleda:
curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');
See kirjutab pidemikule praegu teadaolevad küpsised selle seadistatud purki. Lõpeta pidemiku kasutamine selle seansi jaoks enne, kui määrad selle mitteseotud tööle. Ainult purgi teekonna muutmine pidemikul, mis juba hoiab Alice'i küpsiseid, ei võrdu Bobi puhta seansi loomisega.
Erista ka edukat allalaadimist edukast püsivusest. Küpsisepurgi dokumentatsioon märgib, et kirjutamistõrget puhastamise ajal ei tagastata tavapärase ülekandetõrkena. Kontrolli teegikonna omandit, õigusi ja rakenduse diagnostilist väljundit, kui sisselogimine töötab ühe päringu jaoks ja kaob järgmisega.
Samaaegsed päringud toovad sisse veel ühe piiri. Kaks töötajat võivad laadida sama vana purgi, iseseisvalt muuta oma mälusisest olekut ja seejärel salvestada erinevaid tulemusi. Seansipõhine lukk või samaväärne serialiseerimine peab katma kogu laadimise, vahetuse ja salvestamise jada, kui mõlemad päringud jagavad üht kaugsisselogimist; ainult lõpliku kirjutamise lukustamine ei ühilda nende varasemaid hetktõmmiseid. Erinevatel seanssidel peaksid olema erinevad failid ja sõltumatud lukud.
Väljalogimisel lõpeta kavandatud kaugseanss ja kõrvalda selle kohalik küpsiseolek rakenduse poliitika kohaselt. Värskelt valitud puhverserveri saab seejärel kinnitada mis tahes uue seansi külge, mille kasutaja alustab, ilma et puhveraadress otsustaks, kelle sisselogimine mälus on.