W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
只要你能把握自己,你就能把握任何東西。 -- 古諺語(yǔ)
應(yīng)開發(fā)同學(xué)的需求,這里補(bǔ)充對(duì)COOKIE的支持。
因?yàn)?,確實(shí)在項(xiàng)目的開發(fā)過(guò)程中,有時(shí)是需要對(duì)COOKIE進(jìn)行處理的。所以,這里提供了簡(jiǎn)單的原生態(tài)支持。
下面通過(guò)代碼示例來(lái)簡(jiǎn)明如何使用。
如同其他的服務(wù)一樣,我們?cè)谑褂们靶枰獙?duì)COOKIE進(jìn)行注冊(cè)。不需要用到COOKIE的同學(xué),可以忽略此服務(wù)的注冊(cè)。
在初始化文件init.php中添加如下注冊(cè)代碼:
//COOKIE
DI()->cookie = 'PhalApi_Cookie';
查看PhalApi_Cookie提供的接口,可以得到針對(duì)COOKIE的三種操作:
//設(shè)置COOKIE服務(wù)
DI()->cookie->set('name', 'phalapi', $_SERVER['REQUEST_TIME'] + 600);
//獲取
echo DI()->cookie->get('name'); //輸出 phalapi
//刪除
DI()->cookie->delete('name');
實(shí)際情況,項(xiàng)目的使用的情況更為復(fù)雜。
比如,需要對(duì)數(shù)據(jù)進(jìn)行加解密,或者需要突破COOKIE的限制(設(shè)置后需要下一次請(qǐng)求才能獲取,不過(guò)這也正是COOKIE的特點(diǎn)),想記住這一次設(shè)置的內(nèi)容。所以,額外提供了這個(gè)升級(jí)版本。
和原生態(tài)的初始化,有些許不同,在于需要配置指定加解密的服務(wù)。如下:
$config = array('crypt' => $crypt, 'key' => 'a secrect');
DI()->cookie = new PhalApi_Cookie($config);
上面中的crypt即為加密解服務(wù),未指定時(shí)使用DI()->crypt,需要實(shí)現(xiàn)PhalApi_Crypt接口;key則為對(duì)應(yīng)的密鑰。
使用同原生態(tài)一樣,客戶端感知不到區(qū)別,這里不再贅述。
假設(shè)我們有這樣一個(gè)簡(jiǎn)單的加解密類(真的很簡(jiǎn)單的):
class Cookie_Crypt_Mock implements PhalApi_Crypt {
public function encrypt($data, $key) {
return base64_encode($data);
}
public function decrypt($data, $key) {
return base64_decode($data);
}
}
隨后,寫一個(gè)簡(jiǎn)單的接口測(cè)試一下(因?yàn)樯婕暗紺OOKIE的操作,需要與瀏覽器可視化測(cè)試,所以沒(méi)用單元測(cè)試):
public function cookieTest() {
$rs = array();
$config = array('crypt' => new Cookie_Crypt_Mock(), 'key' => 'a secrect');
DI()->cookie = new PhalApi_Cookie_Multi($config);
$rs['aEKey'] = DI()->cookie->get('name');
DI()->cookie->set('name', 'phalapi', $_SERVER['REQUEST_TIME'] + 600);
return $rs;
}
運(yùn)行效果如下:
從上圖中可以看出,COOKIE在瀏覽器已經(jīng)被我們做了“加密”,哈哈~
如需擴(kuò)展,請(qǐng)重載PhalApi_Cookie基類。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: