博客列表 >会话控制--登录、注册、验证

会话控制--登录、注册、验证

海阔天空
海阔天空原创
2020年05月10日 22:17:11557浏览

会话控制—session与cookie学习

首页效果图:

首页样式

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. nav {
  6. height: 40px;
  7. background-color: deepskyblue;
  8. display: flex;
  9. justify-content: space-between;
  10. padding: 0 20px;
  11. align-items: center;
  12. }
  13. nav > a {
  14. color: white;
  15. text-decoration: none;
  16. padding: 0 5px;
  17. font-weight: 560;
  18. padding-bottom: 2px;
  19. }
  20. /* nav > a:last-of-type {
  21. margin-left: auto;
  22. } */
  23. nav > a:hover {
  24. border-bottom: 3px solid #a1f8da;
  25. color: rgb(241, 187, 170);
  26. }

session设置与验证

1、要开启session会话
2、判断GET方式(地址栏)传过来的action(login、logout、register),执行相应的操作
3、判断email是否已经存在,进行查重处理

  1. <?php
  2. //开启会话
  3. session_start();
  4. //查询用户表中的数据
  5. $pdo=new PDO('mysql:host=localhost;dbname=php11edu','root','root');
  6. $stmt=$pdo->prepare('select * from `users`');
  7. $stmt->execute();
  8. $users=$stmt->fetchAll(PDO::FETCH_ASSOC);
  9. //处理用户登录与注册
  10. $action=$_GET['action'];
  11. switch(strtolower($action)){
  12. //登录
  13. case 'login':
  14. //判断请求是否合法
  15. if ($_SERVER['REQUEST_METHOD']==='POST'){
  16. //获取需要验证的数据
  17. $email=$_POST['email'];
  18. // sha1()函数加密40位.a后面是数字1.
  19. $password=sha1($_POST['password']);
  20. $results=array_filter($users,function($user) use($email,$password){
  21. return $user['email']===$email && $user['password']===$password;
  22. });
  23. // $results是一个二维数组
  24. // print_r($results);
  25. // die;
  26. if (count($results)===1){
  27. // array_pop(array),返回数组最后一个元素的值
  28. $_SESSION['user']=serialize(array_pop($results));
  29. exit('<script>alert("验证通过!");location.href="index.php";</script>');
  30. }else {
  31. exit ('<script>alert("邮箱或密码错误,或者还没有注册帐号!");location.href="login.php";</script>');
  32. }
  33. } else {
  34. die('请求类型错误!');
  35. }
  36. break;
  37. //退出
  38. case 'logout':
  39. if (isset($_SESSION['user'])){
  40. session_destroy();
  41. exit ('<script>alert("退出成功!");location.assign("index.php");</script>');
  42. }
  43. break;
  44. //注册
  45. case 'register':
  46. //1.获取到所有新用户数据
  47. $name=$_POST['name'];
  48. $email=$_POST['email'];
  49. //邮箱查重
  50. $sql="select * from `users` where `email`='{$email}'";
  51. $stmt=$pdo->prepare($sql);
  52. $stmt->execute();
  53. if ($stmt->rowCount()===1) exit ('<script>alert("该邮箱已经注册,请重新注册!!");location.assign("register.php");</script>');
  54. $password=sha1($_POST['p1']);
  55. $register_time=time();
  56. //2.将新用户插入到表中
  57. $sql="insert `users` set `name`='{$name}',`email`='{$email}',`password` ='{$password}',`register_time`={$register_time}";
  58. $stmt=$pdo->prepare($sql);
  59. $stmt->execute();
  60. if ($stmt->rowCount()===1) exit ('<script>alert("注册成功!!");location.assign("login.php");</script>');
  61. else exit('<script>alert("注册失败!!");location.assign("login.php");</script>');
  62. break;
  63. //未定义
  64. default:
  65. exit("未定义操作!");
  66. }

设置session后,可以通过检查元素Application和temp文件中的session文件查看

注册用的邮箱已存在,提示重新注册

  • 保存到浏览器中的叫: cookie
  • 保存到服务器中的叫: session

总结:

  • 1、handle.php的功能设计得非常巧妙,通过传过来的参- 数,执行相应的操作,结构非常清晰。
  • 2、在程序流程控制中,javascript作用非常强大,需要好好学习。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议