Rumah > pembangunan bahagian belakang > masalah PHP > Mengapa saya tidak boleh memadam kuki dalam php? Analisis ringkas penyelesaian

Mengapa saya tidak boleh memadam kuki dalam php? Analisis ringkas penyelesaian

PHPz
Lepaskan: 2023-04-21 09:20:58
asal
1043 orang telah melayarinya

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);
Salin selepas log masuk

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:

  1. Kuki telah tamat tempoh

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已经过期或者不存在
}
Salin selepas log masuk

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']);
Salin selepas log masuk
  1. Nama domain atau laluan kuki tidak sepadan

. 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());
Salin selepas log masuk

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);
Salin selepas log masuk
  1. Selepas kuki dihantar, halaman itu diubah hala ke alamat lain

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;
Salin selepas log masuk

Sebelum mengubah hala, semak sama ada kuki perlu dihantar:

if($do_send_cookie) {
    setcookie("mycookie", "myvalue", time()+3600);
}
Salin selepas log masuk
  1. Konflik nama kuki antara skrip yang berbeza

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan