控制分发器/请求分发器
代码撸的有点多,复制昨天的代码有点乱
下面这个是控制器分发器,也叫作请求分发器,就是当前端用户发送过来请求时,对前端用户返回的信息,一般是以数组的方式返回,下面代码引用了一个函数的封装文件,老师好像叫做模块,就是把需要后端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>

更多相关文章

  1. Android(安卓)开发指南 翻译 User Interfaces -- Action Bar
  2. Android实现登录对话框
  3. 浅谈Android(安卓)Architecture Components
  4. Android(安卓)报错 android.view.ViewRootImpl$CalledFromWrongT
  5. C++实现AVL树的基本操作指南
  6. js事件/dom操作/定时
  7. 优雅的获取表单元素、dom树的遍历与常用属性、dom元素的增删改操
  8. 表单元素获取,dom树的遍历与常用属性,dom元素的增删改, js操作元
  9. laravel_day3

随机推荐

  1. Android ListView用法(1),不用ListActivit
  2. Android Media Scanner Mechanism Analyz
  3. eclipse导入android的jar包
  4. 如何更新Android Studio版本
  5. Android Lights
  6. Android 圆角图片
  7. Android--DatePickerDialog日期控件
  8. Android之简单的拍照功能
  9. android dialog样式
  10. 一个挺好用的花样开源神器