'n PHP-toepassing bedien Alice en Bob, en albei gebruik sy bedienerkant-cURL-kliënt om dieselfde afgeleë webwerf deur 'n instaanbediener te bereik. As elke versoek cookies.txt laai, kan die twee gebruikers dieselfde afgeleë aanmelding erf. Om hul instaanbedieneradresse te verander, skei nie daardie lêer nie.

Kies die koekie-eienaar voordat jy die lêernaam kies. Gewoonlik is dit die toepassing se logiese afgeleë sessie: 'n plaaslike gebruiker, 'n bepaalde afgeleë rekening en, waar nodig, 'n aparte werkruimte. 'n Instaanbediener-eindpunt is 'n roetekeuse, nie 'n betroubare sessie-identifiseerder nie. Verskeie gebruikers kan een eindpunt deel, en 'n eindpunt kan uitgange roteer.

Laai en stoor dieselfde sessie se koekiepot

Laat die toepassing sy gemagtigde sessie op 'n bediener-gegenereerde lêersleutel karteer. Met 'n private koekiegids en 'n vertroude $sessionKey, het die cURL-konfigurasie hierdie vorm:

$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,
]);

Vir 'n toegelate publieke-webwerf-sessietoets op 'n netwerk wat 'n publieke tussenparty toelaat, verskaf die HTTP-instaanbedienerlys kandidaat-eindpunte. Gebruik 'n handvatsel sonder opgestelde instaanbediener-verifikasie of gestoorde instaanbediener-aanmelding, en hou die koekiestaat aan sy bedoelde sessie toegewys. Hierdie fragment stel 'n handvatsel op; die toepassing voer die oordrag uit en kontroleer die resultaat deur sy normale versoekvloei. COOKIEFILE laai vorige koekies vir die sessie. COOKIEJAR kies waar die handvatsel sy gestoorde koekies skryf. Om net die uitsetlêer te stel, laai nie die vorige aanmelding nie.

'n Nuwe sessie kan met geen lêer begin nie. Gee sy eerste oordrag die bedoelde koekiepot-pad, laat die webwerf die koekies vestig, en stoor die resulterende staat vir die volgende versoek. Die koekiegids moet deur die toepassing se werker beskryfbaar wees en buite die publiek bediende dokumentboom gehou word. Moenie 'n besoekersverskafde gebruikersnaam of pad in 'n lêernaam verander nie; soek die vertroude sleutel op die bediener op.

Stoor benodig 'n plek in die versoeklewensiklus

libcurl skryf gewoonlik die koekiepot tydens die opruiming van die handvatsel. As die toepassing 'n eksplisiete stoorpunt na die afgeleë uitruiling nodig het, kan dit versoek:

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

Dit skryf die koekies wat tans aan die handvatsel bekend is na sy opgestelde koekiepot. Maak klaar met die handvatsel vir daardie sessie voordat jy dit aan onverwante werk toewys. Om net die koekiepot-lêernaam op 'n handvatsel te verander wat reeds Alice se koekies hou, is nie gelykstaande aan die skep van Bob se skoon sessie nie.

Onderskei ook 'n suksesvolle aflaai van suksesvolle volharding. Die koekiepot-dokumentasie noem dat 'n skryffout tydens opruiming nie as 'n gewone oordragfout teruggegee word nie. Kontroleer gidseienaarskap, toestemmings en die toepassing se diagnostiese uitset wanneer 'n aanmelding vir een versoek werk en by die volgende verdwyn.

Gelyktydige versoeke bring nog 'n grens in. Twee werkers kan dieselfde ou koekiepot laai, onafhanklik hul geheuestaat verander en dan verskillende resultate stoor. 'n Slot per sessie of ekwivalente serialisering moet die hele laai-, uitruil- en stoorreeks dek as albei versoeke een afgeleë aanmelding deel; om net die finale skryf te sluit, versoen nie hul vroeëre momentopnames nie. Verskillende sessies moet verskillende lêers en onafhanklike slotte hê.

By afmelding, beëindig die bedoelde afgeleë sessie en trek sy plaaslike koekiestaat terug volgens die toepassing se beleid. 'n Nuut gekose instaanbediener kan dan aan watter nuwe sessie die gebruiker ook al begin, geheg word, sonder om die instaanbediener-adres verantwoordelik te maak vir die besluit wie se aanmelding in die geheue is.

Verwante artikels