PHP lietojumprogramma apkalpo Alisi un Bobu, un abi izmanto tās servera puses cURL klientu, lai caur starpniekserveri sasniegtu to pašu attālo vietni. Ja katrs pieprasījums ielādē cookies.txt, abi lietotāji var mantot vienu un to pašu attālo pieteikšanos. Viņu starpniekservera adrešu maiņa to failu neatdala.

Izvēlieties sīkfaila īpašnieku pirms faila nosaukuma izvēles. Parasti tā ir lietojumprogrammas loģiskā attālā sesija: vietējais lietotājs, konkrēts attālais konts un, ja nepieciešams, atsevišķa darbvieta. Starpniekservera galapunkts ir maršrutēšanas izvēle, nevis uzticams sesijas identifikators. Vairāki lietotāji var kopīgot vienu galapunktu, un galapunkts var mainīt izejas.

Ielādējiet un saglabājiet tās pašas sesijas burku

Ļaujiet lietojumprogrammai kartēt savu autentificēto sesiju uz servera ģenerētu faila atslēgu. Ar privātu sīkfailu direktoriju un uzticamu $sessionKey cURL konfigurācijai ir šāda forma:

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

Atļautam publiskas vietnes sesijas testam tīklā, kas pieļauj publisku starpnieku, HTTP starpniekserveru saraksts piedāvā kandidātu galapunktus. Izmantojiet rokturi bez konfigurētas starpniekservera autentifikācijas vai saglabātiem starpniekservera akreditācijas datiem un turiet sīkfailu stāvokli piešķirtu paredzētajai sesijai. Šis fragments konfigurē rokturi; lietojumprogramma veic pārsūtīšanu un pārbauda rezultātu savā parastajā pieprasījumu plūsmā. COOKIEFILE ielādē iepriekšējos sesijas sīkfailus. COOKIEJAR izvēlas, kur rokturis raksta saglabātos sīkfailus. Iestatot tikai izvades failu, iepriekšējā pieteikšanās netiek ielādēta.

Jauna sesija var sākties bez faila. Dodiet tās pirmajai pārsūtīšanai paredzēto burkas ceļu, ļaujiet vietnei izveidot sīkfailus un saglabājiet iegūto stāvokli nākamajam pieprasījumam. Sīkfailu direktorijam jābūt rakstāmam lietojumprogrammas darbiniekam un jāatrodas ārpus publiski apkalpotā dokumentu koka. Nepārvērsiet apmeklētāja sniegtu lietotājvārdu vai ceļu faila nosaukumā; meklējiet uzticamo atslēgu serverī.

Saglabāšanai vajag vietu pieprasījuma dzīves ciklā

libcurl parasti raksta burku roktura tīrīšanas laikā. Ja lietojumprogrammai pēc attālās apmaiņas vajag skaidru saglabāšanas punktu, tā var pieprasīt:

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

Šis ieraksta rokturim pašlaik zināmos sīkfailus tā konfigurētajā burkā. Pabeidziet roktura lietošanu šai sesijai pirms piešķirat to nesaistītam darbam. Mainīt tikai burkas ceļu rokturī, kas jau tur Alises sīkfailus, nav tas pats, kas izveidot Boba tīru sesiju.

Arī atšķiriet veiksmīgu lejupielādi no veiksmīgas noturības. Sīkfailu burkas dokumentācija norāda, ka rakstīšanas kļūme tīrīšanas laikā netiek atgriezta kā parasta pārsūtīšanas kļūda. Pārbaudiet direktorija īpašumtiesības, atļaujas un lietojumprogrammas diagnostisko izvadi, kad pieteikšanās darbojas vienam pieprasījumam un pazūd nākamajā.

Vienlaicīgi pieprasījumi ievieš vēl vienu robežu. Divi darbinieki var ielādēt vienu un to pašu veco burku, neatkarīgi mainīt savu atmiņas stāvokli un pēc tam saglabāt dažādus rezultātus. Sesijas līmeņa bloķēšanai vai līdzvērtīgai serializācijai jāaptver visa ielādes, apmaiņas un saglabāšanas secība, ja abi pieprasījumi kopīgo vienu attālo pieteikšanos; bloķējot tikai pēdējo ierakstu, to agrākie momentuzņēmumi netiek saskaņoti. Dažādām sesijām jābūt dažādiem failiem un neatkarīgiem bloķējumiem.

Izrakstoties, pabeidziet paredzēto attālo sesiju un izbeidziet tās vietējo sīkfailu stāvokli saskaņā ar lietojumprogrammas politiku. Jaunizvēlētu starpniekserveri pēc tam var piesaistīt jebkurai jaunai sesijai, ko lietotājs sāk, neuzliekot starpniekservera adresei pienākumu izlemt, kura pieteikšanās ir atmiņā.

Saistītie raksti