Rumah >pembangunan bahagian belakang >masalah PHP >Analisis ringkas sebab-sebab mengapa nilai php $_cookie berbeza daripada nilai yang disimpan

Analisis ringkas sebab-sebab mengapa nilai php $_cookie berbeza daripada nilai yang disimpan

PHPz
PHPzasal
2023-03-22 16:54:221335semak imbas

Apabila menggunakan PHP $_COOKIE untuk mendapatkan nilai kuki, kadangkala anda mungkin menghadapi situasi di mana nilai yang diperoleh berbeza daripada nilai yang disimpan Pada masa ini, kami perlu melakukan beberapa penyahpepijatan dan pemeriksaan kod.

Berikut akan memperkenalkan beberapa sebab yang mungkin menyebabkan nilai kuki yang diperolehi berbeza daripada nilai yang disimpan.

  1. Nama pembolehubah tidak konsisten

Memandangkan kuki itu sendiri ialah pengepala permintaan dalam protokol HTTP standard, nama pembolehubah digunakan semasa menyimpan kuki Ia perlu konsisten dengan nama pembolehubah yang digunakan semasa mendapatkannya. Jika nama pembolehubah tidak konsisten, nilai yang diperolehi akan berbeza daripada nilai yang disimpan.

Contohnya:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 获取cookie时
$test = $_COOKIE['Test'];

Dalam contoh ini, nama pembolehubah yang digunakan semasa menyimpan kuki ialah 'ujian', tetapi 'Ujian' digunakan semasa mendapatkannya semula, yang akan menyebabkan nilai diperoleh adalah berbeza daripada nilai yang disimpan.

  1. Laluan tindakan kuki tidak konsisten

Sama seperti nama pembolehubah, laluan tindakan kuki juga perlu konsisten. Jika laluan tindakan ditentukan semasa menyimpan kuki, tetapi tidak apabila mendapatkannya semula, nilai yang diperoleh akan berbeza daripada nilai yang disimpan.

Contohnya:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/test');
 
// 获取cookie时
$test = $_COOKIE['test'];

Dalam contoh ini, laluan tindakan ditentukan sebagai '/test' apabila menyimpan kuki, tetapi ia tidak dinyatakan semasa mendapatkan kuki, mengakibatkan nilai yang diperolehi berbeza.

  1. Masa tamat tempoh kuki tidak konsisten

Jika masa tamat tempoh dinyatakan semasa menyimpan kuki, tetapi masa tamat tempoh telah berlalu apabila kuki diperolehi, maka Nilai yang diperolehi adalah nol.

Contohnya:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 过了过期时间再获取cookie时
sleep(3605);
$test = $_COOKIE['test'];

Dalam contoh ini, masa tamat tempoh kuki yang disimpan adalah sejam kemudian, tetapi masa tamat tempoh telah melebihi apabila kuki diperoleh, mengakibatkan diperolehi Nilai adalah nol.

  1. Isu merentas domain kuki

Jika nama domain tempat kuki disimpan tidak konsisten dengan nama domain tempat kuki itu diperoleh, nilai kuki yang diperoleh juga akan tidak konsisten dengan nama domain yang digunakan untuk mendapatkan kuki Deposit adalah berbeza.

Contohnya:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/', '.example.com');
 
// 在另一个域名上获取cookie时
$test = $_COOKIE['test'];

Dalam contoh ini, nama domain '.example.com' ditentukan semasa menyimpan kuki, tetapi jika kuki itu diperoleh pada nama domain lain, ia akan Tidak dapat memperoleh atau memperoleh nilai yang berbeza.

Ringkasan:

Pastikan nama pembolehubah, laluan tindakan, masa tamat tempoh dan nama domain adalah konsisten untuk mengelakkan isu kuki merentas domain Ini adalah kunci untuk mendapatkan nilai kuki dan menyimpannya Sebab mengapa nilai yang dimasukkan adalah berbeza. Semasa menyahpepijat kod, pastikan anda memberi perhatian kepada isu ini untuk mengelakkan ralat yang tidak perlu.

Atas ialah kandungan terperinci Analisis ringkas sebab-sebab mengapa nilai php $_cookie berbeza daripada nilai yang disimpan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn