Dari dokumentasi php.net :
session_destroy - Menghancurkan semua data yang terdaftar ke sesi
session_unset - Bebaskan semua variabel sesi
Pertanyaan tiga bagian saya adalah:
Kedua fungsi tersebut tampak sangat mirip.
Apa sebenarnya perbedaan antara keduanya?
Keduanya tampaknya menghapus semua variabel yang terdaftar ke sesi. Apakah ada di antara mereka yang benar-benar merusak sesi itu sendiri? Jika tidak, bagaimana Anda melakukannya (hancurkan sesi itu sendiri).
Apakah benar bahwa tidak satu pun dari kedua fungsi tersebut menghapus cookie sesi di klien?
sumber
local $_SESSION variable instance vs session data in the session storage
. Seperti yang saya tahu ada 1000 orang seperti saya yang tidak mengerti maksud Anda. Terima kasihsession_destroy();
menghapus seluruh sesi.session_unset();
menghapus hanya variabel dari sesi - sesi masih ada. Hanya data yang terpotong.sumber
Contoh :
session_start(); session_destroy(); $a = "1234"; $_SESSION[a] = $a;
session_start(); session_unset(); $a = "1234"; $_SESSION[a] = $a;
Jadi, saya akan menggunakan:
session_start(); session_destroy(); session_start(); $a = "1234"; $_SESSION[a] = $a;
sumber
session_unset();
Anda TIDAK melakukan apa-apa karena Anda masih bisa menggunakan sesi$_SESSION["a"]
, jadi apa gunanya?$_SESSION[a]
harus$_SESSION['a']
dan tidak seperti apa yang Anda katakan ini BUKAN NIHIL dalam contoh pertama Andasession_unset()
akan menghapus$_SESSION
variabel (seperti diarray()
), tetapi tidak akan menyentuh file sesi. Tapi saat skrip berakhir; status$_SESSION
akan ditulis ke file. Maka itu akan menghapus file tetapi tidak akan menghapusnya. Ketika Anda menggunakannyasession_destroy()
tidak akan menyentuh$_SESSION
(Gunakanvar_dump($_SESSION)
setelahsession_destroy()
), tetapi akan menghapus file sesi, jadi ketika skrip keluar tidak akan ada file untuk menulis status$_SESSION
.sumber
Saya mencoba menggunakan
session_unset($_SESSION['session_name'])
pemikiran itu hanya akan membatalkan nama sesi tertentu atau individu / tunggal. Tetapi menggunakansession_unset($_SESSION['session_name'])
hanya akan membatalkan semua nama sesi. Kode yang tepat untuk digunakan hanyaunset($_SESSION['session_name'])
jika Anda ingin menghapus satu nama sesi.sumber
session_destroy()
akan menghapus sesi setelah memindahkan halaman dansession_unset()
akan menghapus sesi saat kode dijalankan.sumber
session_start (); #itu akan membuat array virtual (asosiatif) di memori realtime browser
dua item ditambahkan
> $_SESSION['me'] = "Yadab"; > $_SESSION['you'] = "Avi"; > > print_r($_SESSION); #will give, array( "me"=>"Yadab", "you"=>"Avi" )
tes1
> unset($_SESSION['me']); #only 'me' variable is removed fully (index & value) > print_r($_SESSION); #now the array is Array("you"=>"Avi")
tes2
> session_destroy(); #will unset the values of all session variables, but indexes exists > print_r($_SESSION); #Output, Array("you"=>undefined) > #but some browser can store the value in cookies
tes3
> session_unset(); #will unset all the main variables not only the values > print_r($_SESSION); #that means session array is now empty, like Array()
uji blok 1, 2, atau 3 secara individual dengan mengomentari orang lain
sumber
Saya pikir session_destroy () dan session_unset () harus digunakan pada saat yang sama untuk memastikan bahwa data sesi benar-benar dihapus.
sumber
session_unset()
setelah itusession_destroy()
tidak ada gunanya. Gunakansession_unset()
untuk menghapus semua kunci dan nilai dari $ _SESSION superglobal, atau gunakansession_destroy()
untuk menghapus seluruh sesi; jangan gunakan keduanya hanya untuk "memastikan", percayakan fungsi tersebut untuk melakukan tugasnya.session_destroy()
tidak membatalkan setelan var superglobal sebelum keluar dari laman ini.