വേറിട്ട ഉപയോക്തൃ സെഷനുകൾക്കായി PHP cURL കുക്കി ജാറുകൾ
ദൂര സെഷനെ ചുറ്റിപ്പറ്റി PHP cURL കുക്കി നിലനിർത്തൽ രൂപകൽപ്പന ചെയ്യുക: വിശ്വസനീയ ഫയൽ നാമങ്ങൾ, വ്യക്തമായ സേവ്, ഒരേസമയം ഉള്ള അഭ്യർത്ഥനകൾ.
ഒരു PHP ആപ്ലിക്കേഷൻ Alice-നും Bob-നും സേവനം നൽകുന്നു, ഇരുവരും അതിന്റെ സെർവർ-സൈഡ് cURL ക്ലയന്റ് ഉപയോഗിച്ച് പ്രോക്സി വഴി അതേ ദൂര വെബ്സൈറ്റിൽ എത്തുന്നു. ഓരോ അഭ്യർത്ഥനയും cookies.txt ലോഡ് ചെയ്യുന്നുവെങ്കിൽ, രണ്ട് ഉപയോക്താക്കൾക്കും ഒരേ ദൂര ലോഗിൻ പാരമ്പര്യമായി ലഭിക്കാം. അവരുടെ പ്രോക്സി വിലാസങ്ങൾ മാറ്റുന്നത് ആ ഫയലിനെ വേർതിരിക്കുന്നില്ല.
ഫയൽ നാമം തിരഞ്ഞെടുക്കുന്നതിന് മുമ്പ് കുക്കിയുടെ ഉടമയെ തിരഞ്ഞെടുക്കുക. സാധാരണയായി അത് ആപ്ലിക്കേഷന്റെ യുക്തിപരമായ ദൂര സെഷനാണ്: ഒരു പ്രാദേശിക ഉപയോക്താവ്, ഒരു നിർദ്ദിഷ്ട ദൂര അക്കൗണ്ട്, ആവശ്യമെങ്കിൽ ഒരു വേറിട്ട വർക്ക്സ്പേസ്. പ്രോക്സി എൻഡ്പോയിന്റ് ഒരു റൂട്ടിംഗ് തിരഞ്ഞെടുപ്പാണ്, വിശ്വസനീയ സെഷൻ ഐഡന്റിഫയർ അല്ല. നിരവധി ഉപയോക്താക്കൾക്ക് ഒരു എൻഡ്പോയിന്റ് പങ്കിടാം, ഒരു എൻഡ്പോയിന്റിന് എക്സിറ്റുകൾ മാറ്റാം.
അതേ സെഷന്റെ ജാർ ലോഡ് ചെയ്ത് സേവ് ചെയ്യുക
ആപ്ലിക്കേഷന് അതിന്റെ പ്രാമാണീകരിച്ച സെഷൻ സെർവർ സൃഷ്ടിച്ച ഫയൽ കീയിലേക്ക് മാപ്പ് ചെയ്യാൻ അനുവദിക്കുക. സ്വകാര്യ കുക്കി ഡയറക്ടറിയും വിശ്വസനീയമായ $sessionKey-ഉം ഉണ്ടെങ്കിൽ, cURL കോൺഫിഗറേഷന് ഈ രൂപമുണ്ട്:
$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,
]);
പൊതു മധ്യസ്ഥനെ അനുവദിക്കുന്ന നെറ്റ്വർക്കിൽ അനുവദനീയമായ പൊതു സൈറ്റ് സെഷൻ പരിശോധനയ്ക്ക്, HTTP പ്രോക്സി പട്ടിക സ്ഥാനാർത്ഥി എൻഡ്പോയിന്റുകൾ നൽകുന്നു. കോൺഫിഗർ ചെയ്ത പ്രോക്സി പ്രാമാണീകരണമോ സൂക്ഷിച്ചിരിക്കുന്ന പ്രോക്സി ക്രെഡൻഷ്യലുകളോ ഇല്ലാത്ത ഹാൻഡിൽ ഉപയോഗിക്കുക, കുക്കി അവസ്ഥ ഉദ്ദേശിച്ച സെഷന് അനുവദിച്ച് നിർത്തുക. ഈ ഭാഗം ഒരു ഹാൻഡിൽ കോൺഫിഗർ ചെയ്യുന്നു; ആപ്ലിക്കേഷൻ കൈമാറ്റം നടത്തുകയും അതിന്റെ സാധാരണ അഭ്യർത്ഥന പ്രവാഹത്തിലൂടെ ഫലം പരിശോധിക്കുകയും ചെയ്യുന്നു. COOKIEFILE സെഷന്റെ മുൻ കുക്കികൾ ലോഡ് ചെയ്യുന്നു. COOKIEJAR ഹാൻഡിൽ സൂക്ഷിച്ച കുക്കികൾ എവിടെ എഴുതണമെന്ന് തിരഞ്ഞെടുക്കുന്നു. ഔട്ട്പുട്ട് ഫയൽ മാത്രം സെറ്റ് ചെയ്യുന്നത് മുൻ ലോഗിൻ ലോഡ് ചെയ്യുന്നില്ല.
പുതിയ സെഷൻ ഫയൽ ഇല്ലാതെ ആരംഭിക്കാം. അതിന്റെ ആദ്യ കൈമാറ്റത്തിന് ഉദ്ദേശിച്ച ജാർ പാത്ത് നൽകുക, വെബ്സൈറ്റിനെ കുക്കികൾ സ്ഥാപിക്കാൻ അനുവദിക്കുക, ഫലമായ അവസ്ഥ അടുത്ത അഭ്യർത്ഥനയ്ക്കായി സേവ് ചെയ്യുക. കുക്കി ഡയറക്ടറി ആപ്ലിക്കേഷന്റെ വർക്കർക്ക് എഴുതാവുന്നതും പൊതുവായി സേവിക്കുന്ന ഡോക്യുമെന്റ് ട്രീയ്ക്ക് പുറത്തും ആയിരിക്കണം. സന്ദർശകൻ നൽകുന്ന ഉപയോക്തൃനാമമോ പാത്തോ ഫയൽ നാമമാക്കി മാറ്റരുത്; സെർവറിൽ വിശ്വസനീയ കീ കണ്ടെത്തുക.
സേവ് ചെയ്യാൻ അഭ്യർത്ഥനയുടെ ജീവിതചക്രത്തിൽ സ്ഥലം വേണം
libcurl സാധാരണയായി ഹാൻഡിൽ വൃത്തിയാക്കുമ്പോൾ ജാർ എഴുതുന്നു. ദൂര കൈമാറ്റത്തിന് ശേഷം ആപ്ലിക്കേഷന് വ്യക്തമായ സേവ് പോയിന്റ് വേണമെങ്കിൽ, അത് അഭ്യർത്ഥിക്കാം:
curl_setopt($ch, CURLOPT_COOKIELIST, 'FLUSH');
ഇത് ഹാൻഡിലിന് ഇപ്പോൾ അറിയാവുന്ന കുക്കികൾ അതിന്റെ കോൺഫിഗർ ചെയ്ത ജാറിലേക്ക് എഴുതുന്നു. ആ സെഷനുവേണ്ടി ഹാൻഡിൽ ഉപയോഗിക്കുന്നത് അവസാനിപ്പിച്ച ശേഷം അത് ബന്ധമില്ലാത്ത ജോലിക്ക് നൽകുക. ഇതിനകം Alice-ന്റെ കുക്കികൾ കൈവശമുള്ള ഹാൻഡിലിൽ ജാർ പാത്ത് മാത്രം മാറ്റുന്നത് Bob-ന്റെ ശുദ്ധമായ സെഷൻ സൃഷ്ടിക്കുന്നതിന് തുല്യമല്ല.
വിജയകരമായ ഡൗൺലോഡും വിജയകരമായ നിലനിർത്തലും വേർതിരിച്ചറിയുക. കുക്കി-ജാർ ഡോക്യുമെന്റേഷൻ പറയുന്നത് വൃത്തിയാക്കലിനിടയിലുള്ള എഴുത്ത് പരാജയം സാധാരണ കൈമാറ്റ പിശകായി തിരികെ നൽകില്ല എന്നാണ്. ഒരു അഭ്യർത്ഥനയ്ക്ക് ലോഗിൻ പ്രവർത്തിച്ച് അടുത്തതിൽ അപ്രത്യക്ഷമാകുമ്പോൾ ഡയറക്ടറി ഉടമസ്ഥത, അനുമതികൾ, ആപ്ലിക്കേഷന്റെ ഡയഗ്നോസ്റ്റിക് ഔട്ട്പുട്ട് എന്നിവ പരിശോധിക്കുക.
ഒരേസമയം ഉള്ള അഭ്യർത്ഥനകൾ മറ്റൊരു അതിർത്തി കൊണ്ടുവരുന്നു. രണ്ട് വർക്കർമാർക്ക് ഒരേ പഴയ ജാർ ലോഡ് ചെയ്യാം, സ്വതന്ത്രമായി അവരുടെ മെമ്മറി അവസ്ഥ മാറ്റാം, തുടർന്ന് വ്യത്യസ്ത ഫലങ്ങൾ സേവ് ചെയ്യാം. രണ്ട് അഭ്യർത്ഥനകളും ഒരു ദൂര ലോഗിൻ പങ്കിടുന്നുവെങ്കിൽ, പെർ-സെഷൻ ലോക്ക് അല്ലെങ്കിൽ തത്തുല്യമായ ക്രമീകരണം മുഴുവൻ ലോഡ്, കൈമാറ്റം, സേവ് എന്നിവ ഉൾക്കൊള്ളണം; അവസാന എഴുത്ത് മാത്രം ലോക്ക് ചെയ്യുന്നത് അവരുടെ മുൻ സ്നാപ്പ്ഷോട്ടുകൾ യോജിപ്പിക്കുന്നില്ല. വ്യത്യസ്ത സെഷനുകൾക്ക് വ്യത്യസ്ത ഫയലുകളും സ്വതന്ത്ര ലോക്കുകളും ഉണ്ടായിരിക്കണം.
ലോഗൗട്ടിൽ, ഉദ്ദേശിച്ച ദൂര സെഷൻ അവസാനിപ്പിക്കുക, ആപ്ലിക്കേഷന്റെ നയപ്രകാരം അതിന്റെ പ്രാദേശിക കുക്കി അവസ്ഥ വിരമിക്കുക. പുതുതായി തിരഞ്ഞെടുത്ത പ്രോക്സി പിന്നീട് ഉപയോക്താവ് ആരംഭിക്കുന്ന ഏത് പുതിയ സെഷനോടും ബന്ധിപ്പിക്കാം, മെമ്മറിയിൽ ആരുടെ ലോഗിൻ എന്ന് തീരുമാനിക്കുന്നത് പ്രോക്സി വിലാസത്തിന്റെ ചുമതലയാക്കാതെ.