session、cookie原理
来源:互联网 发布:电力 大数据 编辑:程序博客网 时间:2024/06/06 05:03
Session的机制
Session的客户端实现形式(即Session ID的保存方法)
一般浏览器提供了两种方式来保存,还有一种是程序员使用HTML隐藏域的方式自定义实现:
[1]使用Cookie来保存,这是最常见的方法,本文“记住我的登录状态”功能的实现正式基于这种方式的。服务器通过设置Cookie的方式将SessionID发送到浏览器。如果我们不设置这个过期时间,那么这个Cookie将不存放在硬盘上,当浏览器关闭的时候,Cookie就消失了,这个SessionID就丢失了。如果我们设置这个时间为若干天之后,那么这个Cookie会保存在客户端硬盘中,即使浏览器关闭,这个值仍然存在,下次访问相应网站时,同样会发送到服务器上。
[2]使用URL附加信息的方式,也就是像我们经常看到JSP网站会有aaa.jsp?JSESSIONID=*一样的。这种方式和第一种方式里面不设置Cookie过期时间是一样的。
[3]第三种方式是在页面表单里面增加隐藏域,这种方式实际上和第二种方式一样,只不过前者通过GET方式发送数据,后者使用POST方式发送数据。但是明显后者比较麻烦。
实现“记住我的登录状态”的功能
到目前为止,已经基本明确了“记住我的登录状态”的实现方式和理论依据,后文将使用jsp和php两种Web开发技术来具体实现这个功能。
一般来说,登录信息既可以存储在session中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。
下面是一个简单的例子,分别使用session和cookie存储用户登录信息。
<?phpsession_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);
?>
- session cookie 原理
- session cookie 原理
- session cookie 原理
- session cookie 原理2
- session cookie 原理
- session和cookie原理
- session、cookie原理
- Cookie&Session原理详解
- session cookie原理
- Cookie和Session的原理
- Cookie和Session的原理
- session cookie原理及应用
- 浅析session、cookie原理机制
- cookie和session工作原理
- cookie和session的原理
- Cookie和Session的作用,cookie、Session工作原理
- Servlet/JSP之“Cookie和Session原理”
- 深入理解Cookie和Session原理
- android 同时点击两个按钮或其他控件均响应的问题
- 关于OOM问题分析
- hdu3666 Count the string
- LTE UE不活动定时器的工作机制
- idea 15 license server
- session、cookie原理
- 含SQLSTATE mysql错误代码汇总大全
- 【Android基础】三、四大组件(一)
- 1. Two Sum
- Android 开发学习资料
- MDS数据降维用于监督学习
- Codeforces Round #354 (Div. 2) A Nicholas and Permutation(水题)
- FCKEditor使用说明
- iOS开发实战(进阶篇)(01)