您好,登錄后才能下訂單哦!
本篇內容介紹了“PHP中如何完成Session的設置、獲取和刪除”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在之前的文章中,我們介紹了客戶端用來儲存用戶數據的cookie
,本篇我們來看一下在PHP中占有非常重要地位的session
,session是一種服務器端的機制,也是用來保存信息的,相比于保存在客戶端的cookie,保存在服務器端的session用戶是無法禁用的,同一個客戶端每次和服務端交互時,不需要每次都傳回所有的cookie值,只需要傳回一個ID就可以了,這個ID是第一次訪問服務器的時候生成的,并且是唯一的。
那接下來就來看一看到底什么是session,應該怎樣去設置、獲取和刪除session吧
什么是session
session中文意思是會話,它用來儲存使用者的相關資料的,這與cookie類似,例如用戶名、個性化設置等等,與cookie不同的是,cookie是將資料保存在客戶端的電腦中,用戶可以禁用;而session是將數據保存在服務器系統下。網頁是無狀態的程序連接,無法記錄用戶的狀態,因此通過session來記錄用戶的相關信息就顯得尤為重要。
當開啟一個session是,PHP會隨機的創建一個sessionID
,每個用戶的sessionID是唯一的。這個sessionID在客戶端與服務器端都會有保存的位置,保存在客戶端會使用cookie的指定目錄里;在服務器端回憶文本的形式保存到指定的session目錄里。
與cookie相比,session是有很多優勢的:
因為session的數據不會在客戶端與服務器端來回的反復傳遞,所以通常情況下session還是更安全的;session能夠存儲的信息比cookie要多很多;用戶可以禁用cookie,但是有方法能夠是session正常工作。
了解了什么是session后,接下來看一看應該怎樣去開啟session。
開啟session
不同于cookie,使用cookie可以直接創建,而在使用session之前必須先啟動,目的是為了讓PHP中的核心程序能夠將session相關的內建環境預先加載到內存中。
在PHP中通過session_start()
函數可以實現開啟session的目的,函數session_start()的語法格式如下:
session_start ([array $options = array()])
其中需要注意的是:
$options
是一個可選函數,是一個關聯數組,并且這個數組中的鍵不需要包含session.前綴。
示例如下:
<?php session_start([ 'cookie_lifetime' => 60*60*24, // 設置 cookie 的有效時間為 1 天 ]); echo 'Session ID 為:'.$_COOKIE['PHPSESSID']; ?>
輸出結果:
需要注意的是:調用 session_start()
函數會生成一個唯一的 Session ID,并保存在瀏覽器的 Cookie 中,默認名稱為“PHPSESSID”。同時,在本地目錄中生成一個以“sess_”加上 Session ID 組成的 Session 文件,用來存儲 Session 中的數據,輸出結果:
通過上述實例,已經了解到了應該怎樣去開啟session,那接下來看一下應該怎樣去設置和獲取session
設置和獲取session
在上文中,啟動了session之后,想要使用session變量,還需要經過設置和獲取session中的數據,想要完成這些還需要通過$_SESSION
數組來完成。使用$_SESSION之前必須要先試用session_start()
函數來開啟session才可以。
$_SESSION
為一個關聯數組,和普通關聯數組鍵值對的含義相同。設置 Session 的語法格式如下:
$_SESSION[名稱] = 值;
示例如下:
<?php session_start(); $str = '好好學習'; $arr = ['Session','$_SESSION']; $_SESSION['study'] = $str; $_SESSION['study1'] = '天天向上'; $_SESSION['title'] = $arr; foreach ($_SESSION as $key => $value) { if(is_array($value)){ echo $key.':'; print_r($value); }else{ echo $key.' = '.$value.'<br>'; } } ?>
輸出結果:
運行后需要注意的是:會將這幾個變量或數組保存到 $_SESSION 中,還會被保存到服務器端由“sess_”和 Session ID 所命名的文件中,這個文件的位置可以通過修改 php.ini 配置文件或使用 session.save_path 配置。
上文中已經了解了怎樣開啟、設置和獲取session,接下來看一下應該怎樣刪除session。
刪除單個session
刪除單個session元素需要通過unset()
函數,該函數可以釋放指定的變量,相當于直接注銷掉數組中的元素,他的語法格式如下:
unset(mixed $var [, mixed $...])
其中需要注意的是:
$var
為要釋放的變量,unset()
函數可以接收多個參數,參數之間使用,
分隔。
實例如下:
<?php session_start(); echo '<pre>'; $str = '好好學習'; $arr = ['刪除 Session','$_SESSION']; $_SESSION['study'] = $str; $_SESSION['study1'] = '天天向上'; $_SESSION['title'] = $arr; echo '定義一個 Session,如下所示:<br>'; print_r($_SESSION); echo '刪除 Session 中名為 title 的元素:<br>'; unset($_SESSION['title']); print_r($_SESSION); ?>
輸出結果:
如此便通過unset()函數完成了刪除session單個元素了。
刪除session多個元素
如果想要一次性刪除多個 Session 元素,即一次注銷所有的會話變量,可以通過將一個空的數組賦值給 $_SESSION
來實現
實例如下:
<?php session_start(); echo '<pre>'; $str = '好好學習'; $arr = ['刪除 Session','$_SESSION']; $_SESSION['study'] = $str; $_SESSION['study1'] = '天天向上'; $_SESSION['title'] = $arr; echo '定義一個 Session,如下所示:<br>'; print_r($_SESSION); echo '刪除 Session 中名為 title 的元素:<br>'; $_SESSION = array(); print_r($_SESSION); ?>
通過將一個空的數組賦值給 $_SESSION 輸出結果:
還有一種方法就是通過session_unset() 函數來釋放session中的所有元素,實例如下:
<?php session_start(); echo '<pre>'; $str = '好好學習'; $arr = ['刪除 Session','$_SESSION']; $_SESSION['study'] = $str; $_SESSION['study1'] = '天天向上'; $_SESSION['title'] = $arr; echo '定義一個 Session,如下所示:<br>'; print_r($_SESSION); echo '刪除 Session 中名為 title 的元素:<br>'; session_unset(); print_r($_SESSION); ?>
輸出結果與上述實例的結果相同,由此我們便通過兩種方法可以刪除session多個元素了。
“PHP中如何完成Session的設置、獲取和刪除”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。