摘要:會話控制的思想是指能夠在網站里根據一個會話跟蹤用戶。在之后,包含了會話控制函數,可以使用超級全局變量。檢查數組來確定一個變量是否是注冊的會話變量。注銷和銷毀注銷某一個會話。
筆記內容來源于《PHP和mysql web開發》,有興趣的可以看看這本書,
一.什么是會話控制:
http是一個無狀態協議,說明http沒有一個內建機制來維護兩個事物之間的狀態。當一個用戶訪問不同的頁面時,http無法告訴我們這兩個請求是否來自同一個用戶。
會話控制的思想是指能夠在網站里根據一個會話跟蹤用戶。在PHP4之后,PHP包含了會話控制函數,可以使用$_SESSION 超級全局變量。
二.基本的會話功能:
1,會話是通過唯一的id來驅動的,會話id是一個加密的隨機數字。它由PHP生成,在會話的生命周期內都會保存在客戶端。可以保存在用戶機器里的cookie,或者通過url在網絡上傳遞。
2,會話id允許我們注冊一些特定的變量,叫做會話變量,保存在服務端。
三.cookie:
cookie是與會話不同的解決辦法。cookei就是一小段信息,由腳本在客戶端機器保存。
可以發送一個包含特定數據且具有如下格式的http標題頭,從而在用戶端機器設置一個cookie。
Set_Cookie:NAME = VALUE; [expires=DATE;][path=PATH;][domain=DOMAIN_NAME;][secure]
這會創建一個名為NAME,值為VALUE的cookie,其他參數可選。expires設置失效日期,如果不設置,將永久有效。除非手動刪除。path和domain結合起來指定url或和cookie相關的url,secure指在普通的http連接中不發送cookie。
2。設置cookie:
如
setcookie ("mycookie","value");
也可以刪除此cookie,只需要將參數時間設置為過去時間。
cookie標題頭必須在發生其他標題頭之前發送,否則無效。這是cookie的限制。
三.實現簡單的會話:
基本步驟:
開始一個會話
注冊會話變量
使用會話變量
注銷會話變量并銷毀會話
開始會話:
方法一:調用session_start()函數開始一段腳本。此最簡單。
此函數會檢查是否有一個會話id存在,如果不存在,會創建一個。并且可以通過$_SESSION超級全局數組訪問。如果存在,則載入并使用。
方法二:是將PHP設置成當有用戶訪問網站的時候就自動啟動一個會話。可以使用php.ini里面的session_auto_start選項。暫時不多介紹。
注冊會話變量:
$_SESSION["my"] = 5;
只需在數組中設置一個元素。在會話結束或手動重置時才會失效。
使用會話變量:
$_SESSION["my"];、 //使用會話變量前要先啟動會話。 if(isset($_SESSION["my"]))... //檢查$_SESSION數組來確定一個變量是否是注冊的會話變量。
注銷和銷毀:
unset($_SESSION["my"]); //注銷某一個會話。 $_SESSION = array(); //首先注銷所有的變量 session_destory (); //然后清除會話id。
實例:
介紹:我們創建一個登陸界面homepage,一個已登陸的界面和一個注銷退出的界面。通過登陸,開啟會話,連接數據庫,再通過會話返回用戶信息,最后可以選擇銷毀會話。直接上三個界面的代碼。
主頁:authmain.php
query($query); if ($result->num_rows) { $_SESSION["valid_user"] = $username; } $db_conn->close(); //檢查登陸用戶是否和數據庫中的數據匹配,匹配則創建變量$_SESSION["valid_user"] = $username; } ?>"; //表單界面,用post方法,將username和password儲存在$_POST[]中。 } ?>home page
"; echo "log out
"; //如果是匹配用戶,則顯示該用戶信息。 } else { if (isset($username)) { echo "could not log you in
"; } else { echo "you are not logged in
"; } echo "
已登陸頁:members_only.php
members_only"; if (isset($_SESSION["valid_user"])) { echo "you are logged in as:" . $_SESSION["valid_user"] . "
"; } else { echo "you are not logged in.
"; } //檢查是否包含一個注冊的用戶,如果有就顯示,沒有就說尚未登陸 echo "back to main page";
注銷退出頁:logout.php
log out
"; } else { echo "you were not logged in,and so have not been logged out.
"; } ?> back to main page
數據庫代碼:
create database auth; use auth; create table authorized_users ( name varchar(20), password varchar(40), primary key (name) ); insert into authorized_users values ( "sha1user",sha1("pass") );
以上為會話的簡單實例,通過這個了解關于會話的內容,方便后面進一步的工作。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25976.html
摘要:一的會話也稱為。如果啟動會話成功,則函數返回,否則返回。會話啟動后就可以載入該會話已經注冊的會話變量以便使用。但數組創建的在會話結束后就會失效。預告本周三更新面試常考之網絡協議,敬請期待。 你好,是我琉憶,歡迎您來到PHP面試專欄。本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面試常考之會話控制周三:PHP面試常考之網絡協議周五:PHP面試常考題之會話控制和...
摘要:因為子進程一定不會是組長進程,所以子進程可以調用。主進程退出子進程繼續執行啦啦啦,啦啦啦,啦啦啦,已經變成啦,開心一般服務器軟件都有寫配置項,比如以模式運行還是以模式運行。 [原文地址:https://blog.ti-node.com/blog...] 其實前面是談過一次daemon進程的,但是并涉及過多原理,但是并不影響使用。今天打算說說關于daemon進程更多的二三事,本質上說,如...
摘要:為應用程序啟用會話狀態時,將檢查應用程序中每個頁面請求是否有瀏覽器發送的值。如果未提供任何值,則將啟動一個新會話,并將該會話的值隨響應一起發送到瀏覽器。 session 什么是session? session在計算機中,尤其在網絡應用中,稱為會話控制;具體到web中的session指的就是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏這個網站所花費的時間。...
閱讀 2574·2021-10-08 10:04
閱讀 2735·2021-09-06 15:02
閱讀 792·2019-08-30 13:50
閱讀 1547·2019-08-30 13:21
閱讀 2586·2019-08-30 11:15
閱讀 2113·2019-08-29 17:19
閱讀 1574·2019-08-26 13:55
閱讀 1261·2019-08-26 10:15