欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP Cookie和Session以及实战七天免登陆

程序员文章站 2022-03-07 19:25:58
...

1. Cookie

cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送 cookie

基本语法:

  1. setcookie(name, value, expire, path, domain);
参数 说明
name cookie的名称
value cookie的值
expire 通常用 time() 函数再加上秒数来设定 cookie 的失效期
path Cookie 在服务器端的有效路径
domain cookie 有效的域名
  1. setcookie("user", "pavin", time()+3600);
  1. $_COOKIE["user"];//查看单个cookie
  2. print_r($_COOKIE);//查看所有的cookie
  1. //当删除 cookie 时,您应当使过期日期变更为过去的时间点,值设置为空
  2. setcookie("user", " ", time()-3600);
  1. setcookie("user", "pavin", time()+3600);
  2. setcookie("user", "perter", time()+3600);

2. Session

2.1 什么是Session

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。

2.2 Session的使用

2.2.1 Session的创建

  1. //创建session 开始一个会话,进行session的初始化
  2. session_start();
  3. //创建一个session
  4. $_SESSION["user"]="Pavin";
  5. $_SESSION["uid"]=1;

2.2.2 销毁session

  1. //销毁和当前session有关的所有资料,并不会清空$_SESSION
  2. session_destroy();
  3. print_r($_SESSION);
  4. //销毁和当前session有关的所有资料,并会清空$_SESSION
  5. $_SESSION=array();
  6. print_r($_SESSION);
  7. //session_destroy() 函数彻底销毁 session。将失去所有已存储的 session 数据
  8. session_destroy();

3. 七天免登陆

login.php

  1. <?php
  2. // 数据接收
  3. $username=$_POST['username'];
  4. $password=$_POST['password'];
  5. //检测到登录动作,清除cookie中所有的别的用户信息
  6. function clearCookies(){
  7. setcookie("username"," ",time()-3600);
  8. setcookie("isLogin"," ",time()-3600);
  9. }
  10. //用户登录
  11. if($_POST['sub']){
  12. if($username=="Pavin" && $password=="123456"){
  13. clearCookies();
  14. //登陆成功后,假设$username保存了用户的登录信息,这里设置为七天免登录
  15. setcookie("username",$username,time()+7*24*3600);
  16. setcookie("isLogin","1");
  17. header("Location:index.php");
  18. }else{
  19. exit("用户名或密码错误");
  20. }
  21. }
  22. //退出登录
  23. if($_GET['action']=="logOUT"){
  24. clearCookies();
  25. }
  26. ?>
  27. <!DOCTYPE html>
  28. <html lang="en">
  29. <head>
  30. <meta charset="UTF-8">
  31. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  32. <title>用户登录</title>
  33. <style>
  34. .box{
  35. width: 300px;
  36. height: 200px;
  37. background-color: lightcyan;
  38. position: absolute;
  39. top: 0;
  40. left: 0;
  41. right: 0;
  42. bottom: 0;
  43. margin: auto;
  44. padding: 40px;
  45. }
  46. h1{
  47. text-align: center;
  48. }
  49. form{
  50. align-content: center;
  51. padding-left: 30px;
  52. }
  53. </style>
  54. </head>
  55. <body>
  56. <div class="box">
  57. <h1>用户登录</h1>
  58. <form action="" method="post">
  59. <table border="1">
  60. <tr>
  61. <td>用户名</td>
  62. <td>
  63. <input type="text" name="username" placeholder="PLEASE ENTER YOUR USERNAME">
  64. </td>
  65. </tr>
  66. <tr>
  67. <td>密码</td>
  68. <td>
  69. <input type="password" name="password" placeholder="PLEASE ENTER YOUR PASSWORD">
  70. </td>
  71. </tr>
  72. <tr>
  73. <td align="center" colspan="2">
  74. <input type="submit" name="sub"></input>
  75. </td>
  76. </tr>
  77. </table>
  78. </form>
  79. </div>
  80. </body>
  81. </html>

PHP    Cookie和Session以及实战七天免登陆

index.php

  1. <?php
  2. if(!(isset($_COOKIE['isLogin'])&&$_COOKIE['isLogin']=="1")){
  3. exit('
  4. <script>
  5. alert("请你先登录再访问主页");
  6. location.href="login.php";
  7. </script>
  8. ');
  9. }
  10. ?>
  11. <!DOCTYPE html>
  12. <html lang="en">
  13. <head>
  14. <meta charset="UTF-8">
  15. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  16. <title>首页</title>
  17. </head>
  18. <body>
  19. <h1>首页</h1>
  20. <?php echo "欢迎你".$_COOKIE['username'];?>
  21. <a href="login.php?action=logOUT">退出</a>
  22. </body>
  23. </html>

PHP    Cookie和Session以及实战七天免登陆