本篇文章為大家展示了PHP中怎么實(shí)現(xiàn)會(huì)話處理,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),萬寧企業(yè)網(wǎng)站建設(shè),萬寧品牌網(wǎng)站建設(shè),網(wǎng)站定制,萬寧網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,萬寧網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。PHP中什么是會(huì)話(session)?
會(huì)話(session)是一種在不同網(wǎng)頁上保留信息的機(jī)制,用于在用戶瀏覽網(wǎng)站或應(yīng)用時(shí)識(shí)別用戶。
大家一定會(huì)有這樣一個(gè)疑問:為什么網(wǎng)站需要會(huì)話?討論這個(gè)問題前,我們需要回過頭來看看HTTP協(xié)議是如何工作的。
HTTP協(xié)議是無狀態(tài)協(xié)議,這意味著服務(wù)器無法在多個(gè)請(qǐng)求之間記住特定用戶。例如,當(dāng)您訪問網(wǎng)頁時(shí),服務(wù)器只負(fù)責(zé)提供所請(qǐng)求頁面的內(nèi)容。因此,當(dāng)您訪問同一網(wǎng)站的其他頁面時(shí),Web服務(wù)器會(huì)分別解釋每個(gè)請(qǐng)求,就好像它們彼此無關(guān)。服務(wù)器無法知道每個(gè)請(qǐng)求都來自同一個(gè)用戶。
下圖簡要描述了HTTP協(xié)議。
在這個(gè)過程中,如果想要顯示特定用戶的信息,則必須在每個(gè)請(qǐng)求中對(duì)用戶進(jìn)行身份驗(yàn)證。想象一下如果每次發(fā)出請(qǐng)求時(shí),都需要進(jìn)行在頁面上輸入用戶名和密碼進(jìn)行身份驗(yàn)證;這樣實(shí)在太繁瑣了,根本不實(shí)用。而,會(huì)話(session)在這個(gè)時(shí)間就派上用場(chǎng)了。
會(huì)話(session)允許用戶跨單個(gè)站點(diǎn)或應(yīng)用程序的不同頁面共享信息, 因此它有助于維護(hù)狀態(tài)。這使服務(wù)器知道所有請(qǐng)求都來自同一用戶,從而允許站點(diǎn)顯示用戶特定的信息和選項(xiàng)。
下圖描述了HTTP協(xié)議如何與會(huì)話一起使用。
PHP如何進(jìn)行會(huì)話處理?
1、啟動(dòng)會(huì)話
每當(dāng)想要處理會(huì)話變量時(shí),就需要確保會(huì)話已經(jīng)啟動(dòng)。有幾種方法可以在PHP中啟動(dòng)會(huì)話。
1)、使用session_start函數(shù)
這是最常見到的方法,其中會(huì)話由session_start函數(shù)啟動(dòng)。
重要的是,session_start在將任何輸出發(fā)送到瀏覽器之前,必須在腳本的開頭調(diào)用該函數(shù)。否則,你會(huì)遇到臭名昭著的Headers are already sent錯(cuò)誤。
2)、自動(dòng)啟動(dòng)會(huì)話
如果需要在整個(gè)應(yīng)用程序中使用會(huì)話,還可以選擇自動(dòng)啟動(dòng)會(huì)話而不使用session_start函數(shù)。
php.ini文件中有一個(gè)配置選項(xiàng)session.auto_start,允許我們?yōu)槊總€(gè)請(qǐng)求自動(dòng)啟動(dòng)會(huì)話。默認(rèn)情況下,它設(shè)置為0,我們可以將其設(shè)置1為啟用自動(dòng)啟動(dòng)功能。
2、獲取會(huì)話ID
服務(wù)器為每個(gè)新會(huì)話創(chuàng)建一個(gè)的id。如果要獲取會(huì)話ID,可以使用該session_id功能,如以下代碼段所示。
這應(yīng)該給你當(dāng)前的會(huì)話ID。該session_id函數(shù)很有趣,因?yàn)樗部梢允褂靡粋€(gè)參數(shù) - 一個(gè)會(huì)話ID。如果要將系統(tǒng)生成的會(huì)話ID替換為您自己的會(huì)話ID,可以將其提供給session_id函數(shù)的第一個(gè)參數(shù)。
重要的是要注意,當(dāng)您想要使用自定義會(huì)話ID啟動(dòng)會(huì)話時(shí),必須將session_id函數(shù)放在session_start之前調(diào)用。
3、創(chuàng)建會(huì)話變量
一旦啟動(dòng)會(huì)話,$_SESSION就會(huì)使用相應(yīng)的會(huì)話信息初始化超全局?jǐn)?shù)組。默認(rèn)情況下,它使用空白數(shù)組初始化,您可以使用鍵值對(duì)存儲(chǔ)更多信息。
下面我們通過代碼示例來看看如何初始化會(huì)話變量。
如上所示,我們使用session_start函數(shù)在腳本開頭啟動(dòng)了一個(gè)會(huì)話;之后,初始化了幾個(gè)會(huì)話變量;最后,我們使用$_SESSION超全局訪問了這些變量。
使用$_SESSION超全局將數(shù)據(jù)存儲(chǔ)在會(huì)話中時(shí),它最終存儲(chǔ)在會(huì)話啟動(dòng)時(shí)創(chuàng)建的服務(wù)器上的相應(yīng)會(huì)話文件中。通過這種方式,會(huì)話數(shù)據(jù)在多個(gè)請(qǐng)求之間共享。
正如我們所討論的,會(huì)話信息在請(qǐng)求之間共享,因此在一個(gè)頁面上初始化的會(huì)話變量也可以從其他頁面訪問,直到會(huì)話到期為止。通常,會(huì)話在瀏覽器關(guān)閉時(shí)到期。
4、修改和刪除會(huì)話變量
我們可以像修改常規(guī)PHP變量一樣修改或刪除先前在應(yīng)用程序中創(chuàng)建的會(huì)話變量。
下面通過示例來看看如何修改會(huì)話變量。
在上面的腳本中,我們首先檢查了是否設(shè)置了$_session['count']變量。如果沒有設(shè)置,我們將設(shè)置為1,否則我們將增加1。因此,如果多次刷新此頁,可以看到計(jì)數(shù)器每次遞增一個(gè)!
另一方面,如果想要?jiǎng)h除會(huì)話變量,可以使用unset函數(shù),如下面的代碼段所示:
這樣,我們就無法再訪問$_SESSION[‘logged_in_user_id’]變量了。因?yàn)樗驯籾nset函數(shù)刪除。
5、銷毀會(huì)話
在上面我們知道可以使用unset函數(shù)來刪除特定的會(huì)話變量;那么如果要一次刪除所有與會(huì)話相關(guān)的數(shù)據(jù),我們要怎么辦?
其實(shí)很簡單,我們可以使用session_destroy函數(shù)。
下面我們來看看session_destroy函數(shù)是如何工作的。
說明:session_destroy函數(shù)刪除存儲(chǔ)在當(dāng)前會(huì)話中的所有內(nèi)容。因此,當(dāng)存儲(chǔ)在磁盤上的會(huì)話數(shù)據(jù)被session_destroy函數(shù)刪除時(shí),我們將從后續(xù)請(qǐng)求中看到一個(gè)空的會(huì)話變量。
注:通常,在用戶注銷時(shí)才會(huì)使用session_destroy函數(shù)
上述內(nèi)容就是PHP中怎么實(shí)現(xiàn)會(huì)話處理,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁題目:PHP中怎么實(shí)現(xiàn)會(huì)話處理-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.rwnh.cn/article28/cephjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站制作、網(wǎng)站改版、定制開發(fā)、ChatGPT、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容