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

pdo用户登录操作以及setcookie跟session会话跟踪的使用场景,未写登录注册退出操作

程序员文章站 2022-03-16 07:57:14
...

控制分发器/请求分发器
代码撸的有点多,复制昨天的代码有点乱
下面这个是控制器分发器,也叫作请求分发器,就是当前端用户发送过来请求时,对前端用户返回的信息,一般是以数组的方式返回,下面代码引用了一个函数的封装文件,老师好像叫做模块,就是把需要后端pdo处理的文件封装到一个函数中,通过参数的传入到函数方法中,pdo在函数的方法中使用前端返回来过来的值.

会话跟踪
1:setcookie
使用setcookie进行会话跟踪时,如果不设置时间,cookie是由浏览器维护,如果设置时间,是由服务器硬盘维护
写法setcookie('参数名', '参数值', 时间);
setcookie('username', '张三', time() + 3600);
2:session
session 直接使用超全局$_SESSION给他的下标赋值,写法$_SESSION['参数'] = '值'; 结果赋值给了参数
使用session时需要服务器的php环境开启session会话,使用session_start();一般服务器是开启的
$_SESSION['username'] = '张三';

  1. <?php
  2. //会话跟踪
  3. // 使用setcookie进行会话跟踪时,如果不设置时间,cookie是由浏览器维护,如果设置时间,是由服务器硬盘维护
  4. // 写法setcookie('参数名', '参数值', 时间);
  5. // setcookie('username', '张三', time() + 3600);
  6. //session 直接使用超全局$_SESSION给他的下标赋值,写法$_SESSION['参数'] = '值'; 结果赋值给了参数
  7. //使用session时需要服务器的php环境开启session会话,使用session_start();一般服务器是开启的
  8. // $_SESSION['username'] = '张三';
  9. // 链接数据库
  10. require('1123common.php');
  11. //后端接收一下前端返回过来的参数
  12. // isset检测变量是否已设置
  13. // 其中uname和pwd均为前端传过来的数据
  14. $userName = isset($_POST['uname']) ? $_POST['uname'] : null;
  15. $passw = isset($_POST['pwd']) ? $_POST['pwd'] : null;
  16. // 通过前端接收过来的type参数,get的方式,值为type后缀,一般为登录,注册,退出等操作
  17. // 通过strtolower将大小写转为小写
  18. $type = strtolower($_GET['type']);
  19. $ppassw = md5($passw);
  20. // var_dump($userName, $passw, $type);
  21. //请求分发器
  22. // 注册 登录 退出登录均使用请求分发器
  23. switch ($type) {
  24. // 值为login就是登录操作
  25. case 'login':
  26. //在1123common.php封装了一个函数 checkName($userName, $passw)验证账号密码是否正确
  27. // 通过返回值是true跟false来判断是否登录成功
  28. $res = checkName($userName, $passw);
  29. // 给前端返回一个json数组,status值为1,msg值为登录成功,320将字符转为汉语
  30. if ($res) {
  31. echo json_encode(['status' => 1, 'msg' => '登录成功'], 320);
  32. } else {
  33. echo json_encode(['status' => 2, 'msg' => '登录失败'], 320);
  34. };
  35. break;
  36. // // 退出操作
  37. // case 'tc':
  38. // # code...
  39. // break;
  40. // // 注册操作
  41. // case 'zc':
  42. // # code...
  43. // break;
  44. }

封装的查询数据库用户登录及塞入session会话操作
当前文件中require(‘1122shujukupdo.php’);引入了昨天的pdo作业文件,pdo作业文件前面还有一个数据库配置文件哦
这个相当于模型文件,处理后端接收到的前端文件的数据库操作文件.也就是增删改查的pdo操作,封装到一个函数中,当其他任意一个页面需要此函数时,只需要引入即可,而且在当用户登录成功时,给用户记录一个session会话,便于用户后期在其他页面的操作,也就是用户的标识符号吧

  1. <?php
  2. session_start();
  3. // 模型文件 model
  4. // 连接数据库通过引入的文件pdo
  5. require('1122shujukupdo.php');
  6. // 封装一个函数方法来执行后面的操作
  7. function checkName($userName, $passw)
  8. {
  9. // 超全局函数引入pdo
  10. global $pdo;
  11. $sql = "SELECT * FROM `user` WHERE `user`= ? AND `password`= ? ";
  12. $login = $pdo->prepare($sql);
  13. $ress = $login->execute([$userName, md5($passw)]);
  14. if ($ress) {
  15. $ress = $login->fetch(PDO::FETCH_ASSOC);
  16. if ($ress) {
  17. $_SESSION['username'] = $ress['user'];
  18. return true;
  19. } else {
  20. return false;
  21. }
  22. }
  23. };

这是前端用户的操作文件,登录,注销,更改信息等
用户登录页面代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <title>瓜子二手车登录</title>
  7. <!-- Tell the browser to be responsive to screen width -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1">
  9. <!-- Theme style -->
  10. <link rel="stylesheet" href="/public/static/css/adminlte.min.css">
  11. </head>
  12. <style>
  13. </style>
  14. <body class="hold-transition login-page">
  15. <div class="login-box">
  16. <div class="login-logo">
  17. <a href="../../index2.html"><b>瓜子</b>二手车登录</a>
  18. </div>
  19. <!-- /.login-logo -->
  20. <div class="card">
  21. <div class="card-body login-card-body">
  22. <p class="login-box-msg">请输入账户和密码</p>
  23. <form role="form" id="quickForm">
  24. <div class="card-body">
  25. <div class="form-group">
  26. <label for="uname">账户</label>
  27. <input type="text" name="uname" class="form-control" id="uname" placeholder="输入账户" autofocus>
  28. </div>
  29. <div class="form-group">
  30. <label for="pwd">密码</label>
  31. <input type="password" name="pwd" class="form-control" id="pwd" placeholder="输入密码">
  32. </div>
  33. </div>
  34. <!-- /.card-body -->
  35. <div class="card-footer">
  36. <button type="submit" class=" form-control btn btn-primary">登录</button>
  37. </div>
  38. <a href="4-reg.php" class="login-box-msg">没有账号去注册?</a>
  39. </form>
  40. </div>
  41. <!-- /.login-card-body -->
  42. </div>
  43. </div>
  44. <!-- /.login-box -->
  45. <!-- jQuery -->
  46. <script src="/public/static/js/jquery.min.js"></script>
  47. <!-- jquery-validation -->
  48. <script src="/public/static/js/jquery.form.min.js"></script>
  49. <script src="/public/static/js/jquery.validate.min.js"></script>
  50. <script type="text/javascript">
  51. $(document).ready(function() {
  52. $.validator.setDefaults({
  53. submitHandler: function(form) {
  54. $(form).ajaxSubmit({
  55. url: '1123kongzhi.php?type=login',
  56. dataType: null,
  57. type: 'POST',
  58. success: function(res) {
  59. let res1 = JSON.parse(res);
  60. console.log(res1.status);
  61. if (res1.status == 1) {
  62. alert('登录成功');
  63. window.location.href = "1123index.php";
  64. } else {
  65. alert('用户名或密码错误,请检查');
  66. }
  67. },
  68. error: function() {
  69. alert('系统出错啦,请稍后重试');
  70. }
  71. })
  72. }
  73. });
  74. // 对表单的校验
  75. $('#quickForm').validate({
  76. rules: {
  77. uname: {
  78. required: true,
  79. rangelength: [2, 10]
  80. },
  81. pwd: {
  82. required: true,
  83. minlength: 5
  84. }
  85. },
  86. messages: {
  87. uname: {
  88. required: "账户不能为空",
  89. rangelength: '用户名必须2-10字符'
  90. },
  91. pwd: {
  92. required: "密码不能为空",
  93. minlength: "密码至少5个字符"
  94. }
  95. },
  96. errorElement: 'span',
  97. errorPlacement: function(error, element) {
  98. error.addClass('invalid-feedback');
  99. element.closest('.form-group').append(error);
  100. },
  101. highlight: function(element, errorClass, validClass) {
  102. $(element).addClass('is-invalid');
  103. },
  104. unhighlight: function(element, errorClass, validClass) {
  105. $(element).removeClass('is-invalid');
  106. }
  107. });
  108. });
  109. </script>
  110. </body>
  111. </html>

登录后的页面以及通过session超全局变量输出当前的用户名操作
可以比喻为用户登录网站后的其他任意操作,比如改密码,发文章,删评论的页面 ,是页面,并不是数据库的增删改查操作

  1. <?php
  2. session_start()
  3. ?>
  4. <!DOCTYPE html>
  5. <html lang="zh-CN">
  6. <head>
  7. <meta charset="UTF-8">
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  10. <title>Document</title>
  11. </head>
  12. <body>
  13. <h1>欢迎您,<?php echo $_SESSION['username'] ?></h1>
  14. </body>
  15. </html>