為何使用了session_destroy函數,session_id就沒了?和課程中的說明不一樣
<?php session_start(); $_SESSION['name']?=?'jobs'; echo?session_id(); //在這里刪除name的session值 unset($_SESSION['name']); if?(isset($_SESSION['name']))?{ ????echo?$_SESSION['name']; } session_destroy(); echo?session_id(); 輸出結果: qrnjdtqn0g83t7t5tc56jkhks3
為何使用了session_destroy函數,session_id就沒了,和課程中的說明不一樣。
2019-03-08
課程原文: session_destroy并不會立即的銷毀全局變量$_SESSION中的值。
看清楚,是全局變量$_SESSION中的值。
如下
輸出
2020-09-28
慕數據的回答更是錯上加錯,甚至連教程的錯誤原話都沒找到?
session_id和全局變量$_SESSION中值的延時銷毀有關系?
"如果要刪除所有的session,可以使用session_destroy函數銷毀當前session,【session_destroy會刪除所有數據,但是session_id仍然存在?!?看清楚,這句課程就是是錯的!
你完全拿不到session_id還能證明session_id存在嗎,你$_SESSION變量再有值,session文件都沒了,會話都結束了。
w3c原話“終結 Session:
如果您希望刪除某些 session 數據,可以使用 unset() 或 session_destroy() 函數。
unset() 函數用于釋放指定的 session 變量:
您也可以通過 session_destroy() 函數徹底終結 session:
注釋:session_destroy() 將重置 session,您將失去所有已存儲的 session 數據”
http://www.zixuephp.com/html/phphuihua/20150824_41386.html “session_destroy()結束當前的session”。
教程是搬的這句?https://www.php.net/manual/zh/function.session-destroy.php“為了徹底銷毀會話,必須同時重置會話 ID。 如果是通過 cookie 方式傳送會話 ID 的,那么同時也需要 調用 setcookie() 函數來 刪除客戶端的會話 cookie”是因為session_id在cookie存了一份拷貝,才說session_destroy沒法重置cookie里那份session_id的。
https://www.php.net/manual/zh/function.session-id.php這里還說了session_id() 返回當前會話ID。 如果當前沒有會話,則返回空字符串("")
https://www.phpernote.com/php-function/922.html“session_destroy();//這個作用更徹底,刪除$_SESSION 刪除session文件,和session_id”
2018-09-20
感覺用了session_destroy()函數,就刪了所有session了
2018-08-25
那應該是你的第一個echo session_id()吧? 代碼是從上往下執行的 個人理解
2018-03-28
在代碼的第6行,你已經調用了unset函數了,此時$_SESSION被立刻銷毀。