PHP cURL Cookië-Bechere fir getrennt Benotzersitzungen
D'Cookië-Persistenz vun PHP cURL ronderëm d'Fern-Sitzung gestalten: vertrauenswürdeg Dateinimm, explizit Späicheren a gläichzäiteg Ufroen.
Eng PHP-Applikatioun bedéngt Alice a Bob, an alleb zwéi benotzen hire Server-säiteg cURL-Client, fir iwwer e Proxy déi selwecht Fern-Websäit z'erreechen. Wann all Ufro cookies.txt lued, kënnen déi zwéi Benotzer dee selwechte Fern-Login ierwen. D'Ännerung vun hire Proxy-Adressen trennt déi Datei net.
Wielt den Eigentümer vum Cookie, ier Dir den Dateinumm wielt. Meeschtens ass et déi logesch Fern-Sitzung vun der Applikatioun: e lokale Benotzer, e bestëmmte Fern-Konto an, wou et néideg ass, e separaten Aarbechtsberäich. En Proxy-Endpunkt ass eng Routing-Wiel, keen zouverlässegen Sitzungs-Identifkator. E puer Benotzer kënnen een Endpunkt deelen, an en Endpunkt kann Ausgäng rotéieren.
D'Bechere vun der selwechter Sitzung lueden a späicheren
Loosst d'Applikatioun hir authentifizéiert Sitzung op e vum Server generéierten Dateischlëssel kartéieren. Mat engem private Cookië-Verzeechnis an engem vertrauenswürdege $sessionKey huet d'cURL-Konfiguratioun dës 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,
]);
Fir en erlaabte Sitzungstest op enger ëffentlecher Säit an engem Netzwierk, dat en ëffentlechen Intermédiaire erlaabt, liwwert d'HTTP-Proxy-Lëscht Kandidat-Endpunkten. Benotzt en Handle ouni konfiguréiert Proxy-Authentifikatioun oder gespäicherte Proxy-Identitéitsdonnées, a haalt de Cookië-Staat der virgesinnener Sitzung zougewisen. Dëst Fragment konfiguréiert en Handle; d'Applikatioun mécht d'Transfert a kontrolléiert d'Resultat iwwer hire gewéinleche Ufro-Floss. COOKIEFILE lued fréier Cookien fir d'Sitzung. COOKIEJAR wielt, wou den Handle seng gespäichert Cookien schreift. Nëmmen d'Ausgabdatei ze setzen lued de fréieren Login net.
Eng nei Sitzung kann ouni Datei ufänken. Gitt hir éischt Transfert de virgesinnene Bechere-Wee, loosst d'Websäit d'Cookien etabléieren, a späichert de resultéierende Staat fir déi nächst Ufro. De Cookië-Verzeechnis muss vum Worker vun der Applikatioun beschreifbar sinn a baussent dem ëffentlech zerwéierte Dokumentbam gehal ginn. Maacht keen Nom vum Benotzer oder Wee, dee vun engem Visiteur kënnt, zu engem Dateinumm; sicht de vertrauenswürdege Schlëssel um Server.
Späicheren brauch en Eck am Liewenszyklus vun der Ufro
libcurl schreift d'Bechere normalerweis beim Botzen vum Handle. Wann d'Applikatioun no dem Fern-Austausch en explizitte Späichpunkt brauch, kann si ufroen:
curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');
Dëst schreift d'Cookien, déi den Handle momentan kennt, a seng konfiguréiert Bechere. Fäerdeg d'Benotzung vum Handle fir déi Sitzung, ier Dir en onverbonener Aarbecht zouweist. Nëmmen den Bechere-Wee op engem Handle z'änneren, deen schonn dem Alice seng Cookien hält, ass net d'selwecht wéi dem Bob seng propper Sitzung ze schafen.
Ënnerscheet och en erfollegräichen Download vun enger erfollegräicher Persistenz. D'Dokumentatioun vun der Cookie-Bechere bemierkt, datt e Schreiffehler beim Botzen net als gewéinleche Transfertfehler zréckkënnt. Kontrolléiert d'Verzeechnis-Eegentum, d'Berechtegungen an d'diagnostesch Ausgab vun der Applikatioun, wann e Login fir eng Ufro funktionéiert an an der nächster verschwënnt.
Gläichzäiteg Ufroe bréngen eng aner Grenz. Zwee Worker kënnen déiselwecht al Bechere lueden, onofhängeg hire Staat am Späicher änneren an duerno ënnerschiddlech Resultater späicheren. E Spär pro Sitzung oder eng gläichwäerteg Serialiséierung muss déi ganz Sequenz vu Lueden, Austausch a Späicheren decken, wann béid Ufroe sech ee Fern-Login deelen; nëmmen dat lescht Schreifen ze spären hält hir fréier Snapshots net ausharmonesch. Verschidde Sitzunge sollten verschidde Dateien an onofhängeg Späre hunn.
Beim Ausloggen fäerdeg d'virgesinn Fern-Sitzung an zitt hire lokale Cookië-Staat no der Politik vun der Applikatioun zréck. En nei gewielte Proxy kann dann un all nei Sitzung ugehaange ginn, déi de Benotzer ufänkt, ouni datt d'Proxy-Adress entscheede muss, wien seng Login am Späicher läit.