ଅଲଗା ଉପଯୋଗକର୍ତ୍ତା ସେସନ ପାଇଁ 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 ର ପରିଷ୍କାର ସେସନ ସୃଷ୍ଟି କରିବା ସହିତ ସମାନ ନୁହେଁ।
ସଫଳ ଡାଉନଲୋଡ ଏବଂ ସଫଳ ସ୍ଥିରତାକୁ ମଧ୍ୟ ଅଲଗା କରନ୍ତୁ। କୁକି-ଜାର ଡକ୍ୟୁମେଣ୍ଟେସନ କହେ ଯେ ସଫାଇ ସମୟରେ ଲେଖିବା ବିଫଳତା ସାଧାରଣ ସ୍ଥାନାନ୍ତର ତ୍ରୁଟି ଭାବରେ ଫେରାଯାଏ ନାହିଁ। ଯେତେବେଳେ ଗୋଟିଏ ଅନୁରୋଧ ପାଇଁ ଲଗଇନ୍ କାମ କରେ ଏବଂ ପରବର୍ତ୍ତୀଟିରେ ଅଦୃଶ୍ୟ ହୋଇଯାଏ, ଡିରେକ୍ଟୋରୀ ମାଲିକାନା, ଅନୁମତି ଏବଂ ଆପ୍ଲିକେସନର ନିଦାନ ଆଉଟପୁଟ ଯାଞ୍ଚ କରନ୍ତୁ।
ସମକାଳୀନ ଅନୁରୋଧ ଆଉ ଏକ ସୀମା ଆଣେ। ଦୁଇ ୱାର୍କର ସେହି ପୁରୁଣା ଜାର ଲୋଡ୍ କରିପାରନ୍ତି, ସ୍ୱାଧୀନ ଭାବରେ ସେମାନଙ୍କର ଇନ-ମେମୋରୀ ସ୍ଥିତି ବଦଳାଇପାରନ୍ତି, ଏବଂ ତାପରେ ଭିନ୍ନ ଫଳାଫଳ ସେଭ କରିପାରନ୍ତି। ଯଦି ଉଭୟ ଅନୁରୋଧ ଏକ ଦୂର ଲଗଇନ୍ ଅଂଶୀଦାର କରନ୍ତି, ତେବେ ପ୍ରତି-ସେସନ ଲକ୍ କିମ୍ବା ସମାନ କ୍ରମବଦ୍ଧତା ସମଗ୍ର ଲୋଡ୍, ବିନିମୟ ଏବଂ ସେଭ କ୍ରମକୁ ଆବୃତ କରିବା ଉଚିତ; କେବଳ ଅନ୍ତିମ ଲେଖାକୁ ଲକ୍ କଲେ ସେମାନଙ୍କର ପୂର୍ବ ସ୍ନାପସଟ ମେଳ ହୁଏ ନାହିଁ। ଭିନ୍ନ ସେସନର ଭିନ୍ନ ଫାଇଲ ଏବଂ ସ୍ୱାଧୀନ ଲକ୍ ରହିବା ଉଚିତ।
ଲଗଆଉଟରେ, ଉଦ୍ଦିଷ୍ଟ ଦୂର ସେସନ ସମାପ୍ତ କରନ୍ତୁ ଏବଂ ଆପ୍ଲିକେସନର ନୀତି ଅନୁସାରେ ଏହାର ସ୍ଥାନୀୟ କୁକି ସ୍ଥିତି ଅବସର ଦିଅନ୍ତୁ। ନୂତନ ଭାବରେ ବଛା ଯାଇଥିବା ପ୍ରକ୍ସି ତାପରେ ଉପଯୋଗକର୍ତ୍ତା ଆରମ୍ଭ କରୁଥିବା ଯେକୌଣସି ନୂଆ ସେସନ ସହିତ ସଂଯୁକ୍ତ ହୋଇପାରେ, ପ୍ରକ୍ସି ଠିକଣାକୁ ମେମୋରୀରେ କାହାର ଲଗଇନ୍ ଅଛି ତାହା ନିର୍ଣ୍ଣୟ କରିବାର ଦାୟିତ୍ୱ ନଦେଇ।