session可以用來存儲多種類型的數據,因此具有很多的用途,常用來存儲用戶的登錄信息,購物車數據,或者一些臨時使用的暫存數據等。
用戶在登錄成功以后,通常可以將用戶的信息存儲在session中,一般的會單獨的將一些重要的字段單獨存儲,然后所有的用戶信息獨立存儲。
$_SESSION['uid'] = $userinfo['uid']; $_SESSION['userinfo'] = $userinfo;
一般來說,登錄信息既可以存儲在sessioin中,也可以存儲在cookie中,他們之間的差別在於session可以方便的存取多種數據類型,而cookie只支持字符串類型,同時對於一些安全性比較高的數據,cookie需要進行格式化與加密存儲,而session存儲在服務端則安全性較高。
范本:
<?php
session_start();
//假設用戶登錄成功獲得了以下用戶數據
$userinfo = array(
'uid' => 10000,
'name' => 'spark',
'email' => 'spark@imooc.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;
//* 將用戶數據保存到cookie中的一個簡單方法 */
$secureKey = 'imooc'; //加密密鑰
$str = serialize($userinfo); //將用戶信息序列化
//用戶信息加密前
$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
//用戶信息加密后
//將加密后的用戶數據存儲到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);
