ពាងឃុកឃី 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 ទេ។
ក៏បែងចែកការទាញយកជោគជ័យពីការរក្សាទុកជោគជ័យដែរ។ ឯកសារពាងឃុកឃីកត់សម្គាល់ថាការបរាជ័យក្នុងការសរសេរកំឡុងពេលសម្អាត មិនត្រូវបានត្រឡប់ជាកំហុសផ្ទេរធម្មតាទេ។ ពិនិត្យមើលកម្មសិទ្ធិថត សិទ្ធិ និងលទ្ធផលរោគវិនិច្ឆ័យរបស់កម្មវិធី នៅពេលការចូលដំណើរការសម្រាប់សំណើមួយ ហើយបាត់នៅសំណើបន្ទាប់។
សំណើដំណាលគ្នានាំយកព្រំដែនមួយទៀត។ កម្មករពីរនាក់អាចផ្ទុកពាងចាស់ដូចគ្នា ផ្លាស់ប្តូរស្ថានភាពក្នុងអង្គចងចាំដោយឯករាជ្យ ហើយបន្ទាប់មករក្សាទុកលទ្ធផលខុសៗគ្នា។ សោកំណត់ក្នុងមួយសម័យ ឬការធ្វើលំដាប់សមមូល ត្រូវគ្របដណ្តប់លំដាប់ផ្ទុក ផ្លាស់ប្តូរ និងរក្សាទុកទាំងមូល ប្រសិនបើសំណើទាំងពីរចែករំលែកការចូលពីចម្ងាយតែមួយ; ការចាក់សោតែការសរសេរចុងក្រោយ មិនផ្សះផ្សារូបភាពមុនៗរបស់ពួកគេទេ។ សម័យផ្សេងគ្នាគួរមានឯកសារផ្សេងគ្នា និងសោឯករាជ្យ។
នៅពេលចាកចេញ បញ្ចប់សម័យពីចម្ងាយដែលចង់បាន ហើយដកស្ថានភាពឃុកឃីក្នុងតំបន់របស់វាចេញតាមគោលនយោបាយរបស់កម្មវិធី។ ប្រូកស៊ីដែលទើបជ្រើសរើសថ្មីអាចភ្ជាប់ទៅសម័យថ្មីណាមួយដែលអ្នកប្រើចាប់ផ្តើម ដោយមិនធ្វើឱ្យអាសយដ្ឋានប្រូកស៊ីទទួលខុសត្រូវក្នុងការសម្រេចថាតើការចូលរបស់អ្នកណានៅក្នុងអង្គចងចាំ។