溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中如何完成Session的設(shè)置、獲取和刪除

發(fā)布時間:2021-10-26 13:33:58 來源:億速云 閱讀:226 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“PHP中如何完成Session的設(shè)置、獲取和刪除”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

PHP中如何完成Session的設(shè)置、獲取和刪除

在之前的文章中,我們介紹了客戶端用來儲存用戶數(shù)據(jù)的cookie,本篇我們來看一下在PHP中占有非常重要地位的session,session是一種服務(wù)器端的機制,也是用來保存信息的,相比于保存在客戶端的cookie,保存在服務(wù)器端的session用戶是無法禁用的,同一個客戶端每次和服務(wù)端交互時,不需要每次都傳回所有的cookie值,只需要傳回一個ID就可以了,這個ID是第一次訪問服務(wù)器的時候生成的,并且是唯一的。

那接下來就來看一看到底什么是session,應(yīng)該怎樣去設(shè)置、獲取和刪除session吧

什么是session

session中文意思是會話,它用來儲存使用者的相關(guān)資料的,這與cookie類似,例如用戶名、個性化設(shè)置等等,與cookie不同的是,cookie是將資料保存在客戶端的電腦中,用戶可以禁用;而session是將數(shù)據(jù)保存在服務(wù)器系統(tǒng)下。網(wǎng)頁是無狀態(tài)的程序連接,無法記錄用戶的狀態(tài),因此通過session來記錄用戶的相關(guān)信息就顯得尤為重要。

當(dāng)開啟一個session是,PHP會隨機的創(chuàng)建一個sessionID,每個用戶的sessionID是唯一的。這個sessionID在客戶端與服務(wù)器端都會有保存的位置,保存在客戶端會使用cookie的指定目錄里;在服務(wù)器端回憶文本的形式保存到指定的session目錄里。

與cookie相比,session是有很多優(yōu)勢的:

因為session的數(shù)據(jù)不會在客戶端與服務(wù)器端來回的反復(fù)傳遞,所以通常情況下session還是更安全的;session能夠存儲的信息比cookie要多很多;用戶可以禁用cookie,但是有方法能夠是session正常工作。

了解了什么是session后,接下來看一看應(yīng)該怎樣去開啟session。

開啟session

不同于cookie,使用cookie可以直接創(chuàng)建,而在使用session之前必須先啟動,目的是為了讓PHP中的核心程序能夠?qū)ession相關(guān)的內(nèi)建環(huán)境預(yù)先加載到內(nèi)存中。

在PHP中通過session_start()函數(shù)可以實現(xiàn)開啟session的目的,函數(shù)session_start()的語法格式如下:

session_start ([array $options = array()])

其中需要注意的是:

$options是一個可選函數(shù),是一個關(guān)聯(lián)數(shù)組,并且這個數(shù)組中的鍵不需要包含session.前綴。

示例如下:

<?php
    session_start([
        'cookie_lifetime' => 60*60*24,  // 設(shè)置 cookie 的有效時間為 1 天
    ]);
    echo 'Session ID 為:'.$_COOKIE['PHPSESSID'];
?>

輸出結(jié)果:

PHP中如何完成Session的設(shè)置、獲取和刪除

需要注意的是:調(diào)用 session_start() 函數(shù)會生成一個唯一的 Session ID,并保存在瀏覽器的 Cookie 中,默認名稱為“PHPSESSID”。同時,在本地目錄中生成一個以“sess_”加上 Session ID 組成的 Session 文件,用來存儲 Session 中的數(shù)據(jù),輸出結(jié)果:

PHP中如何完成Session的設(shè)置、獲取和刪除

通過上述實例,已經(jīng)了解到了應(yīng)該怎樣去開啟session,那接下來看一下應(yīng)該怎樣去設(shè)置和獲取session

設(shè)置和獲取session

在上文中,啟動了session之后,想要使用session變量,還需要經(jīng)過設(shè)置和獲取session中的數(shù)據(jù),想要完成這些還需要通過$_SESSION數(shù)組來完成。使用$_SESSION之前必須要先試用session_start()函數(shù)來開啟session才可以。

$_SESSION 為一個關(guān)聯(lián)數(shù)組,和普通關(guān)聯(lián)數(shù)組鍵值對的含義相同。設(shè)置 Session 的語法格式如下:

$_SESSION[名稱] = 值;

示例如下:

<?php
    session_start();
    $str = '好好學(xué)習(xí)';
    $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>';
        }
    }
?>

輸出結(jié)果:

PHP中如何完成Session的設(shè)置、獲取和刪除

運行后需要注意的是:會將這幾個變量或數(shù)組保存到 $_SESSION 中,還會被保存到服務(wù)器端由“sess_”和 Session ID 所命名的文件中,這個文件的位置可以通過修改 php.ini 配置文件或使用 session.save_path 配置。

上文中已經(jīng)了解了怎樣開啟、設(shè)置和獲取session,接下來看一下應(yīng)該怎樣刪除session。

刪除單個session

刪除單個session元素需要通過unset()函數(shù),該函數(shù)可以釋放指定的變量,相當(dāng)于直接注銷掉數(shù)組中的元素,他的語法格式如下:

unset(mixed $var [, mixed $...])

其中需要注意的是:

$var 為要釋放的變量,unset() 函數(shù)可以接收多個參數(shù),參數(shù)之間使用,分隔。

實例如下:

<?php
    session_start();
    echo '<pre>';
    $str = '好好學(xué)習(xí)';
    $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);
?>

輸出結(jié)果:

PHP中如何完成Session的設(shè)置、獲取和刪除

如此便通過unset()函數(shù)完成了刪除session單個元素了。

刪除session多個元素

如果想要一次性刪除多個 Session 元素,即一次注銷所有的會話變量,可以通過將一個空的數(shù)組賦值給 $_SESSION 來實現(xiàn)

實例如下:

<?php
    session_start();
    echo '<pre>';
    $str = '好好學(xué)習(xí)';
    $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);
?>

通過將一個空的數(shù)組賦值給 $_SESSION 輸出結(jié)果:

PHP中如何完成Session的設(shè)置、獲取和刪除

還有一種方法就是通過session_unset() 函數(shù)來釋放session中的所有元素,實例如下:

<?php
    session_start();
    echo '<pre>';
    $str = '好好學(xué)習(xí)';
    $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);
?>

輸出結(jié)果與上述實例的結(jié)果相同,由此我們便通過兩種方法可以刪除session多個元素了。

“PHP中如何完成Session的設(shè)置、獲取和刪除”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI