4-8 使用session来存储用户的登录信息
本节编程练习不计算学习进度,请电脑登录imooc.com操作

使用session来存储用户的登录信息

session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。

用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储。

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

一般来说,登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。

任务

了解session存储用户登录信息的原理。

  1. <?php
  2. session_start();
  3. //假设用户登录成功获得了以下用户数据
  4. $userinfo = array(
  5. 'uid' => 10000,
  6. 'name' => 'spark',
  7. 'email' => 'spark@imooc.com',
  8. 'sex' => 'man',
  9. 'age' => '18'
  10. );
  11. header("content-type:text/html; charset=utf-8");
  12.  
  13. /* 将用户信息保存到session中 */
  14. $_SESSION['uid'] = $userinfo['uid'];
  15. $_SESSION['name'] = $userinfo['name'];
  16. $_SESSION['userinfo'] = $userinfo;
  17.  
  18. //* 将用户数据保存到cookie中的一个简单方法 */
  19. $secureKey = 'imooc'; //加密密钥
  20. $str = serialize($userinfo); //将用户信息序列化
  21. //用户信息加密前
  22. $str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
  23. //用户信息加密后
  24. //将加密后的用户数据存储到cookie中
  25. setcookie('userinfo', $str);
  26.  
  27. //当需要使用时进行解密
  28. $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
  29. $uinfo = unserialize($str);
  30. echo "解密后的用户信息:<br>";
  31. print_r($uinfo);
下一节