PHP cURL-koekjepotten foar aparte brûkerssessys
PHP cURL-koekjebehear ûntwerpe om de fiere sesje hinne: betroubere filenammen, eksplisyt bewarjen en tagelyk oanfragen.
In PHP-applikaasje betsjinnet Alice en Bob, en beide brûke har cURL-klant oan serverkant om fia in proxy deselde fiere website te berikken. As elk fersyk cookies.txt ladt, kinne de twa brûkers deselde fiere oanmelding ervje. It feroarjen fan har proxy-adressen skiedt dat bestân net.
Kies de koekjeeigner foar't jo de filenamme kieze. Meastentiids is dat de logyske fiere sesje fan 'e applikaasje: in lokale brûker, in bepaald fier account en, as dat nedich is, in aparte wurkromte. In proxy-einpunt is in rûtekar, gjin betroubere sesje-identifikaasje. Ferskate brûkers kinne ien einpunt diele, en in einpunt kin útgongen rotearje.
Laad en bewarje de pot fan deselde sesje
Lit de applikaasje har autentisearre sesje keppelje oan in troch de server makke bestânsskaai. Mei in privee koekjemap en in betroubere $sessionKey hat de cURL-konfiguraasje dizze foarm:
$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,
]);
Foar in tastiene sesjetest op in iepenbiere site yn in netwurk dat in iepenbiere tuskenpersoan tasteat, leveret de HTTP-proxylist kandidaat-einpunten. Brûk in handgreep sûnder konfigurearre proxy-autentikaasje of bewarre proxy-gegevens, en hâld de koekjesteat tawiisd oan 'e bedoelde sesje. Dit fragmint konfigurearret in handgreep; de applikaasje docht de oerdracht en kontrolearret it resultaat fia har normale fersyksstream. COOKIEFILE ladt eardere koekjes foar de sesje. COOKIEJAR selektearret wêr't de handgreep syn bewarre koekjes skriuwt. Allinnich it útfierbestân ynstelle ladt de eardere oanmelding net.
In nije sesje kin sûnder bestân begjinne. Jou syn earste oerdracht it bedoelde potpaad, lit de website de koekjes fêstigje, en bewarje de resultearjende steat foar it folgjende fersyk. De koekjemap moat skriuwber wêze troch de wurker fan 'e applikaasje en bûten de iepenbier tsjinne dokumintbeam hâlden wurde. Meitsje fan in troch in besiker levere brûkersnamme of paad gjin filenamme; sykje de betroubere skaai op 'e server.
Bewarjen hat in plak nedich yn 'e libbenssyklus fan it fersyk
libcurl skriuwt de pot normaal by it opromjen fan 'e handgreep. As de applikaasje nei de fiere útwikseling in eksplisyt bewarplak nedich hat, kin se freegje om:
curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');
Dit skriuwt de koekjes dy't de handgreep op dit stuit ken nei syn konfigurearre pot. Meitsje it gebrûk fan 'e handgreep foar dy sesje ôf foar't jo it oan net besibbe wurk tawize. Allinnich it potpaad feroarje op in handgreep dy't al Alice har koekjes hâldt, is net itselde as it meitsjen fan Bob syn skjinne sesje.
Underskied ek in slagge download fan in slagge bewarring. De dokumintaasje fan 'e koekjepot seit dat in skriuwflater by it opromjen net as gewoane oerdrachtsflater weromjûn wurdt. Kontrolearje mapeigendom, rjochten en de diagnostyske útfier fan 'e applikaasje as in oanmelding foar ien fersyk wurket en by it folgjende ferdwynt.
Tagelyk oanfragen bringe in oare grins yn. Twa wurkers kinne deselde âlde pot lade, har steat yn it ûnthâld ûnôfhinklik feroarje en dan ferskate resultaten bewarje. In slot per sesje of gelykweardige serialisaasje moat de hiele folchoarder fan lade, útwikselje en bewarje dekke as beide oanfragen ien fiere oanmelding diele; allinnich de lêste skriuwing beskoattelje makket har eardere snapshots net lyk. Ferskate sesjes moatte ferskate bestannen en ûnôfhinklike slotten hawwe.
By ôfmelden einigje jo de bedoelde fiere sesje en lûke jo har lokale koekjesteat werom neffens it belied fan 'e applikaasje. In nij keazen proxy kin dan keppele wurde oan hokker nije sesje de brûker ek begjint, sûnder dat it proxy-adres beslute moat waans oanmelding yn it ûnthâld sit.