Jariau cwcis PHP cURL ar gyfer sesiynau defnyddwyr ar wahân
Cynllunio aros cwcis PHP cURL o amgylch y sesiwn bell, gan gynnwys enwau ffeiliau dibynadwy, cadwadau penodol a cheisiadau cyfredol.
Mae cymhwysiad PHP yn gwasanaethu Alice a Bob, ac mae'r ddau yn defnyddio ei glient cURL ochr-gweinydd i gyrraedd yr un wefan bell drwy ddirprwy. Os yw pob cais yn llwytho cookies.txt, gall y ddau ddefnyddiwr etifeddu'r un mewngofnod bell. Nid yw newid eu cyfeiriadau dirprwy yn gwahanu'r ffeil honno.
Dewiswch berchennog y cwci cyn dewis enw'r ffeil. Fel arfer y sesiwn bell resymegol yw hwnnw: defnyddiwr lleol, cyfrif pell penodol ac, lle bo angen, gweithle ar wahân. Mae pwynt terfyn dirprwy yn ddewis llwybro, nid yn adnabyddwr sesiwn dibynadwy. Gall sawl defnyddiwr rannu un pwynt terfyn, a gall pwynt terfyn gylchdroi allanfeydd.
Llwythwch a chadwch jar yr un sesiwn
Gadewch i'r cymhwysiad fapio ei sesiwn dilysiedig i allwedd ffeil a gynhyrchir gan y gweinydd. Gyda chyfeiriadur cwcis preifat ac $sessionKey dibynadwy, mae gan ffurfweddiad cURL y siâp hwn:
$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,
]);
Ar gyfer prawf sesiwn safle cyhoeddus a ganiateir ar rwydwaith sy'n caniatáu cyfryngwr cyhoeddus, mae'r rhestr ddirprwy HTTP yn darparu pwyntiau terfyn ymgeisiol. Defnyddiwch handlen heb ddilysu dirprwy wedi'i ffurfweddu na chredydebau dirprwy a gedwir, a chadwch gyflwr y cwcis wedi'i neilltuo i'r sesiwn a fwriadwyd. Mae'r darn hwn yn ffurfweddu handlen; mae'r cymhwysiad yn perfformio'r trosglwyddiad ac yn gwirio'i ganlyniad drwy ei lif cais arferol. Mae COOKIEFILE yn llwytho cwcis blaenorol y sesiwn. Mae COOKIEJAR yn dewis ble mae'r handlen yn ysgrifennu ei chwcis a gedwir. Nid yw gosod y ffeil allbwn yn unig yn llwytho'r mewngofnod blaenorol.
Gall sesiwn newydd ddechrau heb ffeil. Rhowch y llwybr jar a fwriadwyd i'w throsglwyddiad cyntaf, gadewch i'r wefan sefydlu'r cwcis, a chadwch y cyflwr canlyniadol ar gyfer y cais nesaf. Rhaid i'r cyfeiriadur cwcis fod yn ysgrifenadwy gan weithiwr y cymhwysiad a'i gadw y tu allan i'r goeden ddogfen a wasanaethir yn gyhoeddus. Peidiwch â throi enw defnyddiwr na llwybr a ddarperir gan ymwelydd yn enw ffeil; chwiliwch am yr allwedd ddibynadwy ar y gweinydd.
Mae angen lle i gadw yng nghylch bywyd y cais
Mae libcurl fel arfer yn ysgrifennu'r jar yn ystod glanhau'r handlen. Os oes angen pwynt cadw penodol ar y cymhwysiad ar ôl y cyfnewidiad pell, gall ofyn am:
curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');
Mae hyn yn ysgrifennu'r cwcis y mae'r handlen yn eu hadnabod ar hyn o bryd i'w jar ffurfweddedig. Gorffennwch ddefnyddio'r handlen ar gyfer y sesiwn honno cyn ei neilltuo i waith anghysylltiedig. Nid yw newid llwybr y jar yn unig ar handlen sy'n dal cwcis Alice eisoes yn gyfystyr â chreu sesiwn lân Bob.
Gwahaniaethwch hefyd rhwng lawrlwytho llwyddiannus ac aros llwyddiannus. Mae dogfennaeth y jar cwcis yn nodi na ddychwelir methiant ysgrifennu yn ystod glanhau fel gwall trosglwyddo cyffredin. Gwiriwch berchnogaeth y cyfeiriadur, caniatadau ac allbwn diagnostig y cymhwysiad pan fydd mewngofnod yn gweithio ar gyfer un cais ac yn diflannu ar yr un nesaf.
Mae ceisiadau cyfredol yn cyflwyno ffin arall. Gall dau weithiwr lwytho'r un hen jar, newid eu cyflwr mewn cof yn annibynnol, ac wedyn cadw canlyniadau gwahanol. Rhaid i glo fesul sesiwn neu gyfresoli cyfatebol gwmpasu'r dilyniant llwytho, cyfnewid a chadw cyfan os yw'r ddau gais yn rhannu un mewngofnod pell; nid yw cloi'r ysgrifenniad olaf yn unig yn cysoni eu cipluniau cynharach. Dylai sesiynau gwahanol fod â ffeiliau gwahanol a chloeon annibynnol.
Wrth allgofnodi, gorffennwch y sesiwn bell a fwriadwyd ac ymddeol ei chyflwr cwcis lleol yn ôl polisi'r cymhwysiad. Yna gellir cysylltu dirprwy newydd ei ddewis ag unrhyw sesiwn newydd y bydd y defnyddiwr yn ei dechrau, heb wneud cyfeiriad y dirprwy yn gyfrifol am benderfynu pwy sydd wedi mewngofnodi yn y cof.