PHP session

使用session

在PHP中使用session非常簡單薄声,先執(zhí)行session_start方法開啟session显晶,然后通過全局變量$_SESSION進行session的讀寫杖爽。

session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);

session會自動的對要設(shè)置的值進行encode與decode媒咳,因此session可以支持任意數(shù)據(jù)類型瓦糕,包括數(shù)據(jù)與對象等。

session_start();
$_SESSION['ary'] = array('name' => 'jobs');
$_SESSION['obj'] = new stdClass();
var_dump($_SESSION);

默認情況下款筑,session是以文件形式存儲在服務(wù)器上的智蝠,因此當一個頁面開啟了session之后,會獨占這個session文件奈梳,這樣會導致當前用戶的其他并發(fā)訪問無法執(zhí)行而等待∪列耄可以采用緩存或者數(shù)據(jù)庫的形式存儲來解決這個問題漆撞,這個我們會在一些高級的課程中講到。


刪除與銷毀session

刪除某個session值可以使用PHP的unset函數(shù)于宙,刪除后就會從全局變量$_SESSION中去除浮驳,無法訪問。

session_start();
$_SESSION['name'] = 'jobs';
unset($_SESSION['name']);
echo $_SESSION['name']; //提示name不存在

如果要刪除所有的session捞魁,可以使用session_destroy函數(shù)銷毀當前session至会,session_destroy會刪除所有數(shù)據(jù),但是session_id仍然存在谱俭。

session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
session_destroy();

值得注意的是奉件,session_destroy并不會立即的銷毀全局變量$_SESSION中的值,只有當下次再訪問的時候昆著,$_SESSION才為空县貌,因此如果需要立即銷毀$_SESSION,可以使用unset函數(shù)凑懂。

session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
unset($_SESSION);
session_destroy(); 
var_dump($_SESSION); //此時已為空

如果需要同時銷毀cookie中的session_id窃这,通常在用戶退出的時候可能會用到,則還需要顯式的調(diào)用setcookie方法刪除session_id的cookie值。

使用session來存儲用戶的登錄信息

session可以用來存儲多種類型的數(shù)據(jù)杭攻,因此具有很多的用途祟敛,常用來存儲用戶的登錄信息,購物車數(shù)據(jù)兆解,或者一些臨時使用的暫存數(shù)據(jù)等馆铁。

用戶在登錄成功以后,通彻Γ可以將用戶的信息存儲在session中埠巨,一般的會單獨的將一些重要的字段單獨存儲,然后所有的用戶信息獨立存儲现拒。

$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['userinfo'] = $userinfo;

一般來說辣垒,登錄信息既可以存儲在sessioin中,也可以存儲在cookie中印蔬,他們之間的差別在于session可以方便的存取多種數(shù)據(jù)類型勋桶,而cookie只支持字符串類型,同時對于一些安全性比較高的數(shù)據(jù)侥猬,cookie需要進行格式化與加密存儲例驹,而session存儲在服務(wù)端則安全性較高。

<?php
session_start();
//假設(shè)用戶登錄成功獲得了以下用戶數(shù)據(jù)
$userinfo = array(
    'uid'  => 10000,
    'name' => 'spark',
    'email' => 'spark@163.com',
    'sex'  => 'man',
    'age'  => '18'
);
header("content-type:text/html; charset=utf-8");

/* 將用戶信息保存到session中 */
$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['name'] = $userinfo['name'];
$_SESSION['userinfo'] = $userinfo;

//* 將用戶數(shù)據(jù)保存到cookie中的一個簡單方法 */
$secureKey = '163'; //加密密鑰
$str = serialize($userinfo); //將用戶信息序列化
//用戶信息加密前
$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
//用戶信息加密后
//將加密后的用戶數(shù)據(jù)存儲到cookie中
setcookie('userinfo', $str);

//當需要使用時進行解密
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
$uinfo = unserialize($str);
echo "解密后的用戶信息:<br>";
print_r($uinfo);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末退唠,一起剝皮案震驚了整個濱河市鹃锈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞧预,老刑警劉巖屎债,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異垢油,居然都是意外死亡扔茅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門秸苗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人运褪,你說我怎么就攤上這事惊楼。” “怎么了秸讹?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵檀咙,是天一觀的道長。 經(jīng)常有香客問我璃诀,道長弧可,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任劣欢,我火速辦了婚禮棕诵,結(jié)果婚禮上裁良,老公的妹妹穿的比我還像新娘。我一直安慰自己校套,他們只是感情好价脾,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笛匙,像睡著了一般侨把。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妹孙,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天秋柄,我揣著相機與錄音,去河邊找鬼蠢正。 笑死骇笔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的机隙。 我是一名探鬼主播蜘拉,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼有鹿!你這毒婦竟也來了旭旭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤葱跋,失蹤者是張志新(化名)和其女友劉穎持寄,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娱俺,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡稍味,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荠卷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片模庐。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖油宜,靈堂內(nèi)的尸體忽然破棺而出掂碱,到底是詐尸還是另有隱情,我是刑警寧澤慎冤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布疼燥,位于F島的核電站,受9級特大地震影響蚁堤,放射性物質(zhì)發(fā)生泄漏醉者。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撬即。 院中可真熱鬧立磁,春花似錦、人聲如沸搞莺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽才沧。三九已至迈喉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間温圆,已是汗流浹背挨摸。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岁歉,地道東北人得运。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像锅移,于是被迫代替她去往敵國和親熔掺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 前言 上篇提到的cookie有它的限制非剃,因為他在數(shù)量和大小上受到限制置逻,瀏覽器上儲存不能超過300個,每個服務(wù)器不能...
    Farewell_V587閱讀 537評論 1 3
  • 作用:常用于識別用戶备绽。 簡介:cookie常用于識別用戶券坞。cookie是服務(wù)器留在用戶計算機中的小文件。每當相同的...
    廖馬兒閱讀 900評論 0 2
  • 簡單使用 讀寫session 銷毀session 讀sessionID 寫sessionID 登錄超時的應用 在每...
    一只好奇的茂閱讀 1,143評論 0 22
  • PHP session 變量用于存儲關(guān)于用戶會話(session)的信息肺素,或者更改用戶會話(session)的設(shè)置...
    雨聲不吃魚閱讀 419評論 0 1
  • 什么是session恨锚? session變量用于存儲有關(guān)用戶會話的信息,或更改用戶會話的設(shè)置倍靡。Session 變量保...
    George2016閱讀 429評論 0 0