Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Nilai Kuki Saya Hilang Selepas Menggunakan `setcookie()` dalam PHP?

Mengapa Nilai Kuki Saya Hilang Selepas Menggunakan `setcookie()` dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2024-12-14 11:12:12821semak imbas

Why is My Cookie Value Missing After Using `setcookie()` in PHP?

Memahami Kebolehcapaian Kuki

Isu: Ketiadaan Nilai Kuki yang Tidak Dijangka selepas setcookie()

Dalam PHP, menggunakan $_COOKIE untuk mendapatkan nilai a kuki yang baru dibuat sejurus selepas memanggil setcookie() boleh mengakibatkan nilai yang diingini tidak tersedia. Fenomena ini timbul daripada sifat tak segerak pengendalian kuki HTTP.

A Tale of Time: Interaksi Pelanggan dan Pelayan

Apabila setcookie() digunakan, skrip PHP mengeluarkan arahan untuk mencipta kuki dan masukkannya dalam respons HTTP keluar. Walau bagaimanapun, respons tidak dihantar kepada klien (iaitu, penyemak imbas) sehingga skrip menyelesaikan pelaksanaannya.

Oleh kerana pembolehubah $_COOKIE mencerminkan kuki yang disertakan dalam permintaan HTTP semasa, sebarang perubahan yang dibuat pada kuki semasa pelaksanaan skrip sebelah pelayan tidak tersedia serta-merta dalam $_COOKIE.

Ketersediaan Kuki Garis masa

Untuk menggambarkan garis masa:

  1. setcookie() dipanggil.
  2. Pelaksanaan skrip diteruskan dan mengubah suai pembolehubah $_COOKIE.
  3. Sekali skrip selesai pelaksanaan, respons HTTP lengkap, termasuk kuki yang baru dibuat, dihantar ke klien.
  4. Di sisi klien, kuki baharu ditetapkan, tetapi penyemak imbas tidak menghantar semula kuki ini ke pelayan sehingga permintaan HTTP seterusnya.
  5. Dalam pelaksanaan skrip berikutnya, pembolehubah $_COOKIE akan mengandungi nilai kuki yang baru dibuat.

Menyelesaikan Isu

Untuk memastikan $_COOKIE mencerminkan nilai kuki yang baru ditetapkan, anda boleh mengatasinya dalam skrip yang sama:

setcookie('uname', $uname, time() + 60 * 30);
$_COOKIE['uname'] = $uname;

Tindakan ini mencipta kuki dalam respons HTTP keluar dan segera menetapkannya nilai dalam pembolehubah $_COOKIE, menjadikannya boleh diakses untuk digunakan dalam pelaksanaan skrip semasa.

Atas ialah kandungan terperinci Mengapa Nilai Kuki Saya Hilang Selepas Menggunakan `setcookie()` dalam PHP?. 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