Melihat dokumentasi php tentang pengaturan cookie, saya melihat bahwa saya dapat menetapkan tanggal kedaluwarsa untuk cookie tersebut. Anda dapat mengatur cookie agar kedaluwarsa pada akhir sesi browser atau beberapa waktu di masa mendatang tetapi saya tidak melihat cara untuk mengatur cookie agar tidak pernah kedaluwarsa. Apakah ini bahkan mungkin dan bagaimana ini dicapai?
187
$cookie->setMaxAge(2147483647);
, yang lebih dari 2080 dan bekerja pada 32-bit dan 64-bit, dengan github.com/delight-im/PHP-CookieJawaban:
Semua cookie kedaluwarsa sesuai spesifikasi cookie , jadi ini bukan batasan PHP.
Gunakan tanggal yang jauh di masa depan. Misalnya, tetapkan cookie yang kedaluwarsa dalam sepuluh tahun:
Perhatikan bahwa jika Anda menetapkan tanggal melewati 2038 dalam PHP 32-bit, nomor tersebut akan membungkus dan Anda akan mendapatkan cookie yang kedaluwarsa secara instan.
sumber
Nilai maksimum: 2147483647
Untuk menghindari integer overflow, timestamp harus diatur ke:
Menetapkan nilai yang lebih tinggi dapat menyebabkan masalah dengan browser lama.
Lihat juga RFC tentang cookie :
dan RFC 2616, 14,6 Usia :
http://www.faqs.org/rfcs/rfc2616.html
sumber
Tetapkan waktu absolut yang jauh di masa depan :
Lebih baik menggunakan waktu absolut daripada menghitungnya relatif terhadap saat ini seperti yang direkomendasikan dalam jawaban yang diterima.
Nilai maksimum yang kompatibel dengan sistem 32 bit adalah:
sumber
Hak istimewa saya mencegah saya membuat komentar pada posting pertama sehingga harus pergi ke sini.
Pertimbangan harus diperhitungkan 2038 bug unix ketika menetapkan 20 tahun sebelumnya dari tanggal saat ini yang disarankan sebagai jawaban yang benar di atas.
Cookie Anda pada 19 Januari 2018 + (20 tahun) dapat mencapai masalah 2038 tergantung pada browser dan atau versi yang akhirnya Anda jalankan.
sumber
Tidak bisakah Anda mengatakan lingkaran yang tidak pernah berakhir, cookie kedaluwarsa sebagai tanggal saat ini + 1 sehingga tidak pernah mengenai tanggal yang seharusnya berakhir karena cookie selalu besok? Sedikit berlebihan tetapi hanya mengatakan.
sumber
Meskipun itu tidak mungkin dilakukan, Anda dapat melakukan sesuatu yang mirip dengan yang dilakukan Google dan mengatur cookie agar kedaluwarsa pada 17 Januari 2038 atau sesuatu yang sama jauhnya.
Dalam semua kepraktisan Anda mungkin lebih baik mengatur cookie Anda selama 10 tahun atau 60 * 60 * 24 * 365 * 10, yang seharusnya hidup lebih lama dari sebagian besar mesin cookie Anda akan hidup.
sumber
Jika Anda ingin mempertahankan data pada mesin klien secara permanen -atau setidaknya sampai cache browser dikosongkan sepenuhnya, gunakan penyimpanan lokal Javascript:
https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage
Jangan gunakan penyimpanan sesi, karena akan dihapus seperti cookie dengan usia maksimum Nol.
sumber
Tidak pernah dan selamanya adalah dua kata yang saya hindari menggunakan karena ketidakpastian kehidupan.
Waktu terakhir sejak
1 January 1970
itu dapat disimpan menggunakan32-bit
bilangan bulat yang ditandatangani adalah03:14:07 on Tuesday, 19 January 2038
(231-1 = 2,147,483,647
detik setelah1 January 1970
) . Batasan ini dikenal sebagai masalah Tahun 2038sumber
Saya percaya bahwa tidak ada cara untuk membuat cookie bertahan selamanya, tetapi Anda hanya perlu mengaturnya agar kedaluwarsa jauh di masa depan, seperti tahun 2100.
sumber
Anda seharusnya tidak melakukan itu dan itu tidak mungkin, Jika Anda mau, Anda dapat menetapkan nilai yang lebih besar seperti 10 tahun ke depan.
Omong-omong, saya belum pernah melihat cookie dengan persyaratan seperti itu :)
sumber
Saya tidak yakin tetapi apakah cookie tidak dihapus saat browser tutup? Saya entah bagaimana melakukan cookie yang tidak pernah kedaluwarsa dan tanggal yang dikenal krom diakui sebagai "saat browser tutup" ...
sumber
Anda tidak bisa tidak bagaimana jika Anda menetapkan waktu kadaluarsa sekarang + 100 tahun?
sumber