博客列表 >cookie与session实战-2019年11月22日

cookie与session实战-2019年11月22日

古城老巷丶
古城老巷丶原创
2019年12月01日 19:35:45611浏览

SESSION 登录实战

index首页文件
  1. <?php
  2. // 开启session会话
  3. session_start();
  4. // 判断用户是否登录,如果没有,则跳转到相应的页面
  5. // var_dump($_SESSION['name']);
  6. // die;
  7. if (isset($_SESSION['name'])) {
  8. echo '用户: ' . $_SESSION['name'] . '已登录<br>';
  9. echo '<a href="logout.php">退出</a>';
  10. } else {
  11. // 2. 未登录,就跳转到登录页面
  12. echo '<a href="login.php">请登录</a>';
  13. }

login登录页

  1. <?php
  2. // 防止用户重复登录
  3. if (isset($_SESSION['name'])) {
  4. session_start();
  5. # code...
  6. echo '<script>alert("不要重复登录");location.assign("index.php");</script>';
  7. }
  8. ?>
  9. <!DOCTYPE html>
  10. <html lang="en">
  11. <head>
  12. <meta charset="UTF-8">
  13. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  14. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  15. <title>登录</title>
  16. </head>
  17. <body>
  18. <h3>用户登录</h3>
  19. <form action="check.php" method="post" onsubmit="return isEmpty();">
  20. <p>
  21. <label for=" phone">手机:</label>
  22. <input type="phone" name="phone" id="phone">
  23. </p>
  24. <p>
  25. <label for="password">密码:</label>
  26. <input type="password" name="password" id="password">
  27. </p>
  28. <p>
  29. <button>提交</button>
  30. </p>
  31. </form>
  32. <script>
  33. function isEmpty() {
  34. var phone = document.getElementById('phone').value;
  35. var password = document.getElementById('password').value;
  36. if (phone.length === 0 || password.length === 0) {
  37. alert('手机和密码不能为空');
  38. return false;
  39. }
  40. }
  41. </script>
  42. </body>
  43. </html>

check登录验证

  1. <?php
  2. require 'connect.php';
  3. session_start();
  4. // 1.判断用户的请求类型是否正确?
  5. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  6. // 获取表单提交的数据
  7. $user_name = $_POST['phone'];
  8. $user_alias = md5($_POST['password']);
  9. // var_dump($user_alias);
  10. // die;
  11. // 3. 用用户表user.dbf进行验证
  12. $sql = 'SELECT * FROM `user` WHERE `phone` = :phone AND `pwd` = :password LIMIT 1';
  13. $stmt = $pdo->prepare($sql);
  14. $stmt->execute(['phone' => $user_name, 'password' => $user_alias]);
  15. $user = $stmt->fetch(PDO::FETCH_ASSOC);
  16. // var_dump($user['name']);
  17. // die;
  18. // 4. 判断验证的结果
  19. if (false === $user) {
  20. // 验证失败,返回上一下页面
  21. echo '<script>alert("验证失败");history.back();</script>';
  22. die;
  23. }
  24. // 验证成功,将用户的信息写到session
  25. $_SESSION['name'] = $user['name'];
  26. // var_dump($_SESSION['name']);
  27. // die;
  28. echo '<script>alert("登录成功");location.assign("index.php");</script>';
  29. exit;
  30. } else {
  31. echo '请求类型错误';
  32. }

logout退出

  1. <?php
  2. // 必须在用户已经登录的情况下再退出
  3. session_start();
  4. if (isset($_SESSION['name'])) {
  5. session_destroy();
  6. echo '<script>alert("退出成功");location.assign("index.php");</script>';
  7. } else {
  8. // 要求用户先登录
  9. echo '<script>alert("请先登录");location.assign("login.php");</script>';
  10. }

效果图

数据库:

登录前

用户登录页

验证页

登录成功页

总结

cookie与session提供两个页面通信,他们在在多个页面存储一些公共变量,每个页面都能访问这些
变量,实现多个页面的通信作用。
cookie的数据存于客户端,session的数据一般存于服务端。

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