Rumah >pembangunan bahagian belakang >masalah PHP >Mengapa saya tidak boleh memadam kuki dalam php? Analisis ringkas penyelesaian
Kuki ialah alat yang sangat biasa semasa membangunkan aplikasi web. Kuki ialah fail kecil yang boleh disimpan pada komputer pengguna. Ia boleh menyimpan beberapa maklumat data yang berkaitan dengan aplikasi web, seperti pilihan pengguna, kandungan troli beli-belah, status log masuk, dsb. Dalam PHP, pembangun boleh menggunakan fungsi setcookie() untuk menetapkan dan menghantar kuki ke penyemak imbas pengguna Proses ini mudah, tetapi mengurus dan memadam kuki kadangkala menjadi lebih sukar. Artikel ini akan memperkenalkan masalah dan penyelesaian yang mungkin anda hadapi semasa memadamkan kuki dalam PHP.
Biasanya, kuki yang dibuat menggunakan fungsi setcookie() boleh dipadamkan. Untuk memadamkan kuki, hanya tetapkan masa tamat tempohnya kepada masa lalu. Dalam PHP, anda boleh menggunakan kod berikut untuk memadamkan kuki bernama "mycookie":
setcookie("mycookie", "", time() - 3600);
Dalam kod di atas, parameter kedua fungsi setcookie() ialah rentetan kosong, yang digunakan untuk jelas Nilai kuki. Parameter ketiga ialah masa semasa tolak satu jam, dan kuki akan dipadamkan daripada penyemak imbas pengguna apabila kuki tamat tempoh. Walau bagaimanapun, dalam amalan, anda mungkin mendapati bahawa kuki tidak dipadamkan, yang mungkin disebabkan oleh sebab berikut:
Jika kuki telah tamat tempoh, Walaupun menetapkan masa tamat tempoh kepada masa yang lalu tidak akan mengalih keluarnya daripada penyemak imbas pengguna. Dalam PHP, anda boleh menggunakan fungsi isset() untuk menyemak sama ada kuki telah tamat tempoh:
if(isset($_COOKIE['mycookie'])) { // Cookie存在 } else { // Cookie已经过期或者不存在 }
Jika fungsi isset() mengembalikan palsu, ini bermakna kuki telah tamat tempoh atau tidak wujud Pada kali ini, anda perlu menggunakan fungsi unset() untuk menyahsetkannya daripada pelayan:
unset($_COOKIE['mycookie']);
. Apabila menggunakan fungsi setcookie() untuk mencipta Kuki, anda boleh menentukan nama domain dan laluan Kuki , yang boleh digunakan untuk mengehadkan skop akses kuki. Jika nama domain atau laluan yang dinyatakan semasa memadamkan kuki tidak sepadan dengan kuki itu dibuat, operasi pemadaman akan gagal. Dalam PHP, anda boleh menyemak nama domain dan laluan kuki melalui kod berikut:
echo $_COOKIE['mycookie']; var_dump(session_get_cookie_params());
Antaranya, fungsi session_get_cookie_params() boleh mendapatkan parameter kuki sesi semasa, termasuk nama domain, laluan, masa tamat tempoh dan maklumat lain.
Jika nama domain dan laluan yang ditentukan tidak sepadan dengan nama domain dan laluan semasa kuki dibuat semasa memadamkan kuki, anda perlu menggunakan fungsi setcookie() untuk menetapkan semula nama domain dan laluan kuki:
setcookie("mycookie", "", time() - 3600, "/path/", "example.com", 0, true);
Dalam PHP, jika halaman menghantar kuki, dan selepas menghantar kuki, halaman itu diubah hala ke alamat lain, maka Kuki ini tidak boleh dipadamkan. Ini kerana apabila menghantar kuki, PHP akan menyimpan maklumat kuki dalam pengepala respons Walau bagaimanapun, apabila halaman diubah hala, pengepala respons sebelumnya telah dihantar ke penyemak imbas, dan kuki kemudiannya Menetapkan. masa luput ke masa lalu tidak mempunyai kesan.
Cara untuk menyelesaikan masalah ini adalah dengan menyemak sama ada ubah hala diperlukan sebelum menghantar kuki Jika ya, jangan hantar kuki. Anda boleh menggunakan fungsi header() untuk ubah hala:
header("Location: /newpage.php"); exit;
Sebelum mengubah hala, semak sama ada kuki perlu dihantar:
if($do_send_cookie) { setcookie("mycookie", "myvalue", time()+3600); }
Dalam PHP, skrip yang berbeza mungkin mempunyai kuki dengan nama yang sama Apabila satu skrip memadamkan kuki dengan nama yang sama, skrip lain juga akan terjejas. Untuk mengelakkan masalah ini, anda boleh menambah awalan atau akhiran pada kuki supaya ia unik dan tidak bercanggah dengan kuki dengan nama yang sama daripada skrip lain.
Ringkasan
Memadam kuki ialah operasi yang sangat asas dalam pembangunan web, dan ia juga merupakan operasi yang perlu dikendalikan dengan berhati-hati. Dalam PHP, jika kuki tidak berjaya dipadamkan, mungkin terdapat banyak sebab. Beberapa situasi yang diperkenalkan dalam artikel ini hanyalah sebahagian daripadanya. Sebenarnya, terdapat banyak sebab lain mengapa kuki tidak boleh dipadamkan. Jika anda menghadapi masalah pemadaman kuki semasa pembangunan, anda perlu menyiasat masalah tersebut dengan teliti dan menyelesaikannya mengikut situasi tertentu.
Atas ialah kandungan terperinci Mengapa saya tidak boleh memadam kuki dalam php? Analisis ringkas penyelesaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!