博客列表 >PHP会话控制cookie和session技术

PHP会话控制cookie和session技术

emagic
emagic原创
2020年07月19日 12:52:23722浏览

0714作业

一、课堂笔记

设置cookie的方式:

  • setcookie()设置cookie

  • setcookie(‘name’,’value’,’expire’,’path’,’domain’,’secure’,’httponly’);

  1. <?php
  2. // 示例:setcookie设置一个cookie,第三个参数设置过期
  3. setcookie("user","emagic",time()+60);
  4. print_r($_COOKIE);
  • 通过header响应头设置cookie
  1. <?php
  2. // 示例:header()设置一个cookie
  3. header('Set-cookie:username = Emagictest');
  4. print_r($_COOKIE);
  • 取cookie 的方式:通过全局变量$_COOKIE
  1. <?php
  2. // 1:查看单个
  3. echo $_COOKIE['user'],'<hr>';
  4. // 2:查看所有
  5. print_r($_COOKIE);
  • 删除cookie的方式:一个是覆盖空值,另外就是设置过期时间是负值,即当前时间time()-减去一个数值
  1. <?php
  2. // 删除cookie方法1
  3. setcookie("username","");
  4. print_r($_COOKIE);
  5. // 删除cookie方法2
  6. setcookie("username","",time()-1);
  7. print_r($_COOKIE);

2.session将数据放于服务器系统下。信息存放在php中目录:session.save_path=”your direction path”

  • 在把用户信息存储到 PHP session 中之前,必须先启动会话session_start()
  • session_start():创建一个会话,其代码之前不能有其他内容
  • php.ini配置文件修改为:session.auto_start = 1 可以不用写session_start()而自动开启

二. 销毁session的方法

1. 创建session,超全局变量方法

  1. <?php
  2. session_start();
  3. // $_SESSION通过超全局变量设置
  4. $_SESSION["user"] = "admintest";
  5. // 查看指定session值 $_SESSION['名称'];
  6. print_r($_SESSION['user']);
  7. echo "<hr>";
  8. // 查看全部session值
  9. print_r($_SESSION);

  • session是保存在后台服务器的而不是前段,前端只有个sessionid卡号

2.销毁session

  1. <?php
  2. session_start();
  3. //清空全局变量
  4. unset($_SESSION['user']);
  5. // session_destroy(); 销毁所有session,包括后台文件也删掉,没有参数
  6. // session_destroy();
  7. print_r($_SESSION);

login.php

  1. <?php
  2. // 登录页面
  3. // 获取post提交的值
  4. $username = $_POST['username'];
  5. $password = $_POST['password'];
  6. // echo $username,$password;
  7. // 自定义一个函数用于清除cookie中所有的用户信息
  8. function clearCookies(){
  9. setcookie("username","",0);
  10. setcookie("status","",0);
  11. }
  12. // 判断是否提交数据
  13. if (isset($_POST['submit'])) {
  14. // 判断用户名和密码是否正确
  15. if ($username == 'admintest' && $password=='123456') {
  16. // 调用自定义函数清除之前的登录用户cookie
  17. clearCookies();
  18. // 信息正确才设置cookie
  19. setcookie('username',$username,strtotime(" +7 days"));
  20. // 设置status登陆状态
  21. setrawcookie('status','1',strtotime(" +7 days"));
  22. // 设置完成直接跳转页面
  23. header("Location:index.php");
  24. } else {
  25. exit('用户名或密码不正确');
  26. }
  27. }
  28. // 当点击退出时跳转到该页面并在get中附带action动作,值等于logout
  29. if ($_GET['action'] == "logout") {
  30. clearCookies();
  31. }
  32. ?>
  33. <!DOCTYPE html>
  34. <html lang="en">
  35. <head>
  36. <meta charset="UTF-8">
  37. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  38. <title>Document</title>
  39. </head>
  40. <body>
  41. <form style="border:solid;width:300px;height:250px;padding:20px;" action="" method="POST">
  42. <h2>用户登录</h2>
  43. <div>
  44. <label for="username">用户名</label>
  45. <input type="text" name="username" id="username" placeholder="请输入登录名" required="required">
  46. </div>
  47. <div>
  48. <label for="password">密&ensp;&ensp;码</label>
  49. <input type="password" name="password" id="password" placeholder="请输入密码" required="required">
  50. </div>
  51. <input type="submit" name="submit" value="提交">
  52. </form>
  53. </body>
  54. </html>

index.php

  1. <?php
  2. ?>
  3. <!DOCTYPE html>
  4. <html lang="en">
  5. <head>
  6. <meta charset="UTF-8">
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <title>Document</title>
  9. </head>
  10. <body>
  11. <h1>登陆成功:</h1>
  12. <?php echo $_COOKIE['username']?>
  13. <a href="login.php?action=logout">退出登录</a>
  14. </body>
  15. </html>

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议