真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP系列(十三)PHP會(huì)話控制

php會(huì)話控制

創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、微信小程序、公眾號(hào)商城、等建站開發(fā),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。

一、cookie

1、會(huì)話控制之Cookie概述

cookie是在http協(xié)議下,服務(wù)器或腳本可以維護(hù)客戶端信息的一種方式。

Cookie是一種由服務(wù)器發(fā)送給客戶端的片段信息,存儲(chǔ)在客戶端瀏覽器的內(nèi)存或者硬盤上。常用于保存用戶名,密碼,個(gè)性化設(shè)置,個(gè)人偏好記錄等。當(dāng)用戶訪問服務(wù)器時(shí),服務(wù)器可以設(shè)置和訪問cookie的信息。

cookie保存在客戶端,通常是IE或Firefox瀏覽器的cookie臨時(shí)文件夾中,可以手動(dòng)刪除。注意:如果瀏覽器上cookie太多,超過了系統(tǒng)所允許范圍,瀏覽器也會(huì)自動(dòng)對(duì)它進(jìn)行刪除


2、Cookie的操作

設(shè)置Cookie

語(yǔ)法:bool setcookie(string name,[string value,[intexpire,[string path,[stringdomain,[intsecure]]]]]);本cookie函數(shù)可以有6個(gè)屬性,常用的有3個(gè)參數(shù)。

//向客戶端發(fā)送一個(gè)Cookie,將變量username值為skygao,保存客戶端一周的時(shí)間

setcookie("username","skygao", time()+60*60*24*7);

//使用setCookie()函數(shù)的全部參數(shù)設(shè)置

setcookie("username","skygao", time()+60*60*24*7, "/test",".example.com", 1);

setcookie參數(shù)解釋

參數(shù)描述示例

name 名字調(diào)用名為cookiename的cookie

value 值假設(shè)第一個(gè)參為cookiename,通過$_COOKIE[‘name’取得值]

exprice 有效時(shí)間設(shè)置cookie的過期時(shí)間和日期,用一個(gè)標(biāo)準(zhǔn)的Unix時(shí)間標(biāo)記,可以用time()函數(shù)取得,以秒為單位.

path 范圍服務(wù)器端的有效路徑,設(shè)置為“/”表示這個(gè)域中所有數(shù)組都可以被訪問讀取。

domain 域名設(shè)定cookie有效域名

secure 指明cookie只能通過安全的

https傳送設(shè)為true時(shí)只能使用安全的https,默認(rèn)為false,即設(shè)置是否僅在https安全連接時(shí)才發(fā)送cookie到客戶端,0或1。

讀取Cookie

如果Cookie設(shè)置成功,客戶端就擁有了Cookie文件,用來(lái)保存Web服務(wù)器為其設(shè)置的用戶信息。

在PHP中讀取Cookie信息很簡(jiǎn)單,使用超全局?jǐn)?shù)組

$_COOKIE[‘cookie名’]即可獲取cookie中的內(nèi)容。

//輸出Cookie中保存的所有用戶信息

print_r($_COOKIE);

3、Cookie的數(shù)組形態(tài)應(yīng)用

數(shù)組也可以利用多維數(shù)組的形式,將多個(gè)內(nèi)容值存儲(chǔ)在相同Cookie名稱標(biāo)識(shí)符下。

setcookie("user[username]","skygao"); //$_COOKIE["user"]["username"]

setcookie("user[password]",md5("123456")); //$_COOKIE["user"]["password"]

setcookie("user[email]","skyga@lampbrother.net");//$_COOKIE["user"]["email"]

//遍歷$_COOKIE[“user”]數(shù)組

foreach($_COOKIE["user"]as $key => $value){

//輸出Cookie數(shù)組中二維的鍵值對(duì)

echo$key.":".$value."\n";

}


4、刪除Cookie

有2種方式刪除Cookie

–1.省略setcookie()函數(shù)的所有參數(shù)列

–2.設(shè)置cookie為已過期

//只指定Cookie識(shí)別名稱一個(gè)參數(shù),即刪除客戶端中這個(gè)指定名稱的Cookie資料

setCookie("account"); //第一種方法

//設(shè)置Cookie 在當(dāng)前時(shí)間過期,因此系統(tǒng)會(huì)自動(dòng)刪除識(shí)別名稱為isLogin的Cookie

setCookie("isLogin", "", time()-1); //第二種方法


二、session

1、會(huì)話控制session的工作機(jī)制

Session和Cookie相似,都是用來(lái)儲(chǔ)存使用者的相關(guān)資料。但最大的不同之處在于Cookie是將數(shù)據(jù)存放在客戶端的計(jì)算機(jī)之中,而Session則是將數(shù)據(jù)存放于服務(wù)器系統(tǒng)之下。

cookie和session在php中的使用區(qū)別:

– cookie和session都可以暫時(shí)保存在多個(gè)頁(yè)面中使用的變量,但是它們有本質(zhì)的差別。

cookie存放在客戶端瀏覽器中,

session保存在服務(wù)器上。

–它們之間的聯(lián)系是session ID一般保存在cookie中,或者放在URL上。

禁用cookie的方法:

–點(diǎn)擊IE中的“工具”—“Internet選項(xiàng)”,在彈出的對(duì)話框里點(diǎn)擊“安全”—“自定義級(jí)別”項(xiàng),將“允許每個(gè)對(duì)話COOKIE”設(shè)為禁用.


2、session的應(yīng)用

Session的聲明與使用

Session的設(shè)置不同于Cookie,必須先啟動(dòng),在PHP中必須調(diào)用session_start()。

session_start()函數(shù)的語(yǔ)法格式如下

– Bool session_start(void)

–注意:session_start()函數(shù)之前不能有任何輸出

Session以數(shù)組的形式使用

–如:$_SESSION[‘session名’]

session_start(); //啟動(dòng)Session的初始化

$_SESSION["username"]= "skygao"; //注冊(cè)Session變量,賦值為一用戶名稱

$_SESSION["uid"]= 1; //注冊(cè)Session變量,賦值為一個(gè)用戶的ID


注冊(cè)一個(gè)會(huì)話變量和讀取Session

在PHP中使用Session變量,除了要啟動(dòng)之外,還要經(jīng)過注冊(cè)的過程。注冊(cè)和讀取Session變量,都要通過訪問$_SESSION數(shù)組完成。

在$_SESSION關(guān)聯(lián)數(shù)組中的鍵名具有和PHP中普通變量相同的命名規(guī)則。

Session變量會(huì)被保存在服務(wù)器端的某個(gè)文件中,該文件的位置是通過php.ini文件,在session.save_path屬性指定的目錄下。

注銷變量與銷毀Session

1.bool session_destroy(void)

–刪除服務(wù)器端保留session信息的文件

2.unset($_SESSION[‘鍵名’])

–刪除內(nèi)存中由Session數(shù)組保存的變量

–清除所有變量可以使用 $_SESSION=array()

3.如果session是基于Cookie的,那么我們還需要?jiǎng)h除客戶端保留的cookie文件

代碼1:

//開啟會(huì)話session(cookie不用)

//session_start()前面不能有任何輸出, 這個(gè)函數(shù)向客戶端發(fā)一個(gè)session_id保存在cookie中

//還在服務(wù)器中創(chuàng)建一個(gè)和保存在客戶端同名的session文件(文本)

session_start();


//使用$_SESSION這個(gè)數(shù)組

$_SESSION['username']="jons";

$_SESSION['age']=18;

$_SESSION['sex']="nv";

$_SESSION['lx']['email']="mz@aaa.com";

$_SESSION['lx']['phone']='119';


echo $_SESSION['username'];

代碼2:

//開啟session

// 1.判斷客戶端是否有了sessionid 變量名為PHPSESSID,直接使用這個(gè)session id開啟會(huì)話

//也不新創(chuàng)建文件了,直接找這個(gè)同名session id的session文件


session_start();

echo '
';

print_r($_SESSION);

echo '
';

echo '
';

echo $_SESSION['username'];


代碼3:

//1開啟會(huì)話session  1

session_start();


//多余的

$username= $_SESSION['username'];


//unset($_SESSION['username']);

//2就可以刪除數(shù)組中的所有內(nèi)容, 即session對(duì)應(yīng)的這個(gè)用戶文件的內(nèi)容就空了

$_SESSION= array();


//刪除客戶中cookie聽sessionid

if(isset($_COOKIE[session_name()])){

setCookie(session_name(),"", time()-3600, "/");


}

//4銷毀session

session_destroy();


echo"再見:{$username}";


3、Session的配置選項(xiàng)

配置Session

php.ini文件和Session有關(guān)的幾個(gè)常用配置選項(xiàng)

– session.auto_start = 0 ; 在請(qǐng)求啟動(dòng)時(shí)初始化session

– session.cache_expire= 180; 設(shè)置緩存中的會(huì)話文檔在 n 分鐘后過時(shí)

– session.cookie_lifetime = 0 ;設(shè)置按秒記的cookie的保存時(shí)間,

相當(dāng)于設(shè)置Session的過期時(shí)間,為0時(shí)表示直到瀏覽器被重啟

– session.auto_start=1,這樣就無(wú)需每次使用session之前都要調(diào)用session_start()。但啟用該選項(xiàng)也有一些限制,如果確實(shí)啟用了 session.auto_start,則不能將對(duì)象放入會(huì)話中,因?yàn)轭惗x必須在啟動(dòng)會(huì)話之前加載以在會(huì)話中重建對(duì)象。

–session.cookie_path = / ; cookie的有效路徑

–session.cookie_domain =; cookie的有效域

– session.name =PHPSESSID;用在cookie里的session的名字

–session.save_handler = files ;用于保存/取回?cái)?shù)據(jù)的控制方式

– session.save_path= /tmp;在 save_handler設(shè)為文件時(shí)傳給控制器的參數(shù),這是數(shù)據(jù)文件將保存的路徑.

–session.use_cookies = 1;是否使用cookies


4、Session的自動(dòng)垃圾回收機(jī)制

php.ini中相關(guān)的配置

– session.cookie_lifetime=0;關(guān)閉瀏覽器相應(yīng)的cookie文件即被刪除

– session.gc_maxlifetime=1440;設(shè)置過期session時(shí)間,默認(rèn)1440秒(24分鐘)

–session.gc_probability/session.gc_divisor;啟動(dòng)垃圾回收機(jī)制的概率(建議值為1/1000~5000)

代碼:

//開啟會(huì)話session(cookie不用)

//session_start()前面不能有任何輸出,  這個(gè)函數(shù)向客戶端發(fā)一個(gè)session_id保存在cookie中

// 還在服務(wù)器中創(chuàng)建一個(gè)和保存在客戶端同名的session文件(文本)

// 調(diào)度PHP的機(jī)制使用session


session_start();


//使用$_SESSION這個(gè)數(shù)組


$_SESSION['username']="jons";

$_SESSION['age']=18;

$_SESSION['sex']="nv";

$_SESSION['aaaaaaaa']="bbbbbbbbbbbbbbb";

$_SESSION['lx']['email']="mz@aaa.com";

$_SESSION['lx']['phone']='119';


echosession_name()." = ".session_id()."
";


5、基于URL傳遞session的id

為啥要使用URL傳session id

基于cookie的方式傳遞session id這種方式更優(yōu)。

但不總是可用,因?yàn)橛脩粼诳蛻舳丝梢云帘蝐okie;

什么是基于url傳session id

是通過url參數(shù)進(jìn)行傳遞

直接將session id嵌入到url中去

參數(shù)規(guī)則

Session_name()和session_id()應(yīng)用

常量SID的使用

URL加session id也是自動(dòng)的

在使用Linux系統(tǒng)做服務(wù)器時(shí),在編輯PHP時(shí),打開—enable-trans-sid配置選項(xiàng),和運(yùn)行時(shí)選項(xiàng)session.use_trans_sid=1激活,在客戶端禁用cookie時(shí),相對(duì)的url將被自動(dòng)修改為包含sessionid,如果沒有配置,或使用windows系統(tǒng)作為服務(wù)器時(shí),可以使用常量SID.

建議使用Linux并配置好

” method=”post”>

Name:

Pass:



當(dāng)前文章:PHP系列(十三)PHP會(huì)話控制
標(biāo)題鏈接:http://weahome.cn/article/gjooeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部