Jawaban:
Anda Mungkin Coba ini
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['remember_user']);
setcookie('remember_user', null, -1, '/');
return true;
} else {
return false;
}
unset($_COOKIE['Hello']);
. Itu tidak mengubah apa pun jika Anda menghapusnya.
unset($_COOKIE['Hello']);
sebenarnya penting jika Anda dapat memeriksa cookie di suatu tempat nanti dalam kode.
Tetapkan nilai ke "" dan tanggal kedaluwarsa menjadi kemarin (atau tanggal apa pun di masa lalu)
setcookie("hello", "", time()-3600);
Maka cookie akan kedaluwarsa saat halaman berikutnya dimuat.
Cara bersih untuk menghapus cookie adalah dengan menghapus $_COOKIE
nilai dan file cookie browser:
if (isset($_COOKIE['key'])) {
unset($_COOKIE['key']);
setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}
setcookie
panggilan ini juga:setcookie('key', '', time() - 3600, '/');
unsetting
berhasil.
null
nilai, Anda harus menggunakan array_key_exists () , karena cookie dengan null
nilai tidak akan ditemukan oleh isset()
cek.
Untuk menghapus cookie dengan andal, itu tidak cukup untuk mengaturnya agar kadaluwarsa di masa lalu, seperti yang dihitung oleh server PHP Anda. Ini karena komputer klien dapat dan seringkali memiliki waktu yang berbeda dari server Anda.
Praktik terbaik adalah menimpa cookie saat ini dengan cookie kosong yang kedaluwarsa satu detik di masa mendatang setelah zaman (1 Januari 1970 00:00:00 UTC), seperti:
setcookie("hello", "", 1);
Itu akan menghapus cookie dalam kode Anda, tetapi karena variabel $ _COOKIE di-refresh pada setiap permintaan, itu hanya akan kembali pada permintaan halaman berikutnya.
Untuk benar-benar menyingkirkan cookie, tetapkan tanggal kedaluwarsa di masa lalu:
// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);
unset()
cookie?
Saya memiliki masalah yang sama dalam kode saya dan menemukan bahwa itu adalah masalah jalur cookie. Lihat posting stack overflow ini: Tidak dapat menghapus set cookie php
Saya telah menetapkan cookie menggunakan nilai jalur "/", tetapi tidak memiliki nilai jalur ketika saya mencoba untuk menghapusnya, jadi itu tidak jelas. Jadi di sini adalah contoh dari apa yang berhasil:
Pengaturan cookie:
$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);
Menghapus cookie:
setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);
Semoga itu bisa membantu.
Jika Anda mengatur cookie agar kedaluwarsa di masa lalu, browser akan menghapusnya. Lihat contoh hapus setcookie () di php.net
Lihat sampel berlabel " Contoh # 2 setcookie () hapus contoh " dari dokumen PHP. Untuk menghapus cookie dari browser, Anda harus memberi tahu browser bahwa cookie telah kedaluwarsa ... browser kemudian akan menghapusnya. unset
karena Anda telah menggunakannya, hanya menghapus cookie 'halo' dari array COOKIE.
Ini adalah cara kerja kode PHP v7 setcookie () saat Anda melakukannya:
<?php
setcookie('user_id','');
setcookie('session','');
?>
Dari output tcpdump saat mengendus port 80, server mengirim ke HTTP header berikut:
Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Mengamati paket dalam permintaan berikut ini Browser tidak lagi mengirim cookie ini di header
Untuk menghapus cookie, Anda hanya perlu mengatur nilai ke NULL:
"Jika Anda menetapkan cookie dengan nilai tidak cacat untuk waktu, jalur, atau domain kedaluwarsa, Anda harus memberikan nilai-nilai yang sama lagi ketika Anda menghapus cookie agar cookie dihapus dengan benar." Kutipan dari buku "Belajar PHP5".
Jadi kode ini harus bekerja (berfungsi untuk saya):
Pengaturan cookie:
setcookie('foo', 'bar', time() + 60 * 5);
Menghapus cookie:
setcookie('foo', '', time() + 60 * 5);
Tetapi saya perhatikan bahwa semua orang menetapkan tanggal kedaluwarsa ke masa lalu, apakah itu perlu, dan mengapa?
''
bukanlah hal yang sama dengan null
.
Untuk menghapus semua cookie, Anda dapat menulis:
foreach ($_COOKIE as $key => $value) {
unset($value);
setcookie($key, '', time() - 3600);
}
Cukup atur tanggal kedaluwarsa ke satu jam yang lalu, jika Anda ingin "menghapus" cookie, seperti ini:
setcookie ("TestCookie", "", time() - 3600);
atau
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
Sumber: http://www.php.net/manual/en/function.setcookie.php
Anda harus menggunakan filter_input()
fungsi untuk semua global yang dapat dimasukkan / dimanipulasi pengunjung, seperti ini:
$visitors_ip = filter_input(INPUT_COOKIE, 'id');
Anda dapat membaca lebih lanjut tentang ini di sini: http://www.php.net/manual/en/function.filter-input.php dan di sini: http://www.w3schools.com/php/func_filter_input.asp
Saya tahu bahwa sudah lama sejak topik ini dibuat, tetapi saya melihat sedikit kesalahan dalam solusi ini (saya bisa menyebutnya seperti itu, karena ini detail). Saya setuju bahwa solusi yang lebih baik mungkin adalah solusi ini:
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
Tetapi, dalam kasus ini, Anda menghapus cookie di setiap kasus di mana fungsi yang tidak disetel bekerja dan segera Anda membuat cookie yang kadaluwarsa jika fungsi yang tidak disetel tidak berfungsi.
Itu berarti bahwa meskipun fungsi yang tidak disetel bekerja, masih ada 2 cookie di komputer. Tujuan yang diminta, dalam sudut pandang logis, adalah untuk menghapus cookie jika memungkinkan dan jika sebenarnya tidak, buatlah itu kedaluwarsa; untuk mendapatkan hasil "terbersih".
Jadi, saya pikir sebaiknya kita lakukan:
if (isset($_COOKIE['remember_user'])) {
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
return true;
} else {
return false;
}
Terima kasih dan semoga harimu menyenangkan :)
$cookie_name = "my cookie";
$cookie_value = "my value";
$cookie_new_value = "my new value";
// Create a cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds
// Get value in a cookie,
$cookie_value = $_COOKIE[$cookie_name];
// Update a cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/");
// Delete a cookie,
setcookie($cookie_name, '' , time() - 3600, "/"); // time() - 3600 means, set the cookie expiration date to the past hour.
Jika Anda ingin menghapus cookie sepenuhnya dari semua domain Anda saat ini maka kode berikut pasti akan membantu Anda.
unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");
Kode ini akan menghapus variabel cookie sepenuhnya dari semua domain Anda yaitu; "/" - ini menunjukkan bahwa nilai variabel cookie siap untuk semua domain, bukan hanya untuk domain atau jalur saat ini. time () - 300 menunjukkan bahwa ia diset ke waktu sebelumnya sehingga akan kedaluwarsa.
Itulah cara itu dihapus dengan sempurna.
Anda bisa mengatur variabel sesi berdasarkan nilai cookie
session_start();
if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}
echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");
Anda cukup menggunakan fungsi penyesuaian ini:
function unset_cookie($cookie_name) {
if (isset($_COOKIE[$cookie_name])) {
unset($_COOKIE[$cookie_name]);
setcookie($cookie_name, null, -1);
} else { return false; }
}
Jika Anda ingin menghapus $ _COOKIE ['user_account'].
Cukup gunakan:
unset_cookie('user_account');
Ketika Anda memasukkan 0
waktu, maksud Anda "sekarang" (+ 0 dari sekarang sebenarnya sekarang) untuk browser dan menghapus cookie.
setcookie("key", NULL, 0, "/");
Saya memeriksanya di browser chrome yang memberi saya:
Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM
Cukup atur nilai cookie false
untuk menghapusnya,
setcookie('cookiename', false);
PS: - Itu cara termudah untuk melakukannya.
Anda harus menghapus cookie dengan php di server Anda dan juga dengan js untuk browser Anda .. (Mereka telah dibuat dengan php, tetapi file cookie juga ada di klien browser):
Sebuah contoh:
if ($_GET['action'] == 'exit'){
// delete cookies with js and then in server with php:
echo '
<script type="text/javascript">
var delete_cookie = function(name) {
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
};
delete_cookie("madw");
delete_cookie("usdw");
</script>
';
unset($_COOKIE['cookie_name']);
unset($_COOKIE['cookie_time']);
Sebagian besar dari Anda lupa bahwa ini hanya akan bekerja pada mesin lokal. Pada domain Anda akan membutuhkan pola seperti contoh ini.
setcookie("example_cookie", 'password', time()-3600, "/", $_SERVER['SERVER_NAME']);
setcookie
berfungsi untuk domain apa pun, baik localhost atau tidak.
$cookie->delete()
dari github.com/delight-im/PHP-Cookie bermanfaat. Kode dari pertanyaan hanya menghapus properti yang telah diuraikan di sisi server. Cookie akan tetap hidup di sisi klien.