博客列表 >PHP基础:利用cookie与session实现用户的注册登陆与验证

PHP基础:利用cookie与session实现用户的注册登陆与验证

暴宇
暴宇原创
2020年06月02日 11:04:472000浏览

PHP基础:利用cookie与session实现用户的注册登陆与验证

1.用户的注册、登陆与验证

1.1实现思路

-当用户打开首页时,判断用户是否已登陆过,如未登陆过,跳转到登陆页面;
-用户输入登陆信息,点击登陆,连接数据库进行验证用户输入的账号与密码是否正确,正确则跳转到首页,不正确则返回登陆页面;
-如登陆成功,则利用cookie或session记录用户登陆状态
-如用户未注册,则需点击注册按钮进行注册,注册成功后跳转到登陆页面;

1.2实现代码

-login.php 登陆页面

  1. <?php
  2. // 1.cookie方式登陆验证
  3. // 判断是否已登录
  4. if (isset($_COOKIE['user']))
  5. exit('<script>alert("请不要重复登录");location.href="index.php";</script>');
  6. // 2.session方式登陆验证
  7. // 判断是否已登录
  8. // 先开启会话,再判断
  9. session_start();
  10. if (isset($_SESSION['user']))
  11. exit('<script>alert("请不要重复登录");location.href="index.php";</script>');
  12. ?>
  13. html代码略过...

-index.php 首页

  1. <?php
  2. // 1.cookie方式登陆验证
  3. if (isset($_COOKIE['user'])) $user = unserialize($_COOKIE['user']);
  4. // 2.session方式登陆验证
  5. // 先开启会话,再判断
  6. session_start();
  7. if (isset($_SESSION['user'])) $user = unserialize($_SESSION['user']);
  8. ?>
  9. html代码略过...

-server.php 注册及登陆验证页面

  1. <?php
  2. // 查询用户表中的数据
  3. $pdo = new PDO('mysql:host=localhost;dbname=study', 'root', 'root');
  4. $stmt = $pdo->prepare('SELECT * FROM `users`');
  5. $stmt->execute();
  6. $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
  7. // 处理用户登录与注册
  8. $action = $_GET['action'];
  9. switch ( strtolower($action)) {
  10. // 登录
  11. case 'login':
  12. // 判断请求是否合法
  13. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  14. // 获取需要验证的数据
  15. $username = $_POST['username'];
  16. $password = sha1($_POST['password']);
  17. $results = array_filter($users, function($user) use ($username, $password) {
  18. return $user['username'] === $username && $user['password'] === $password;
  19. });
  20. if (count($results) === 1) {
  21. // 1.cookie方式
  22. setcookie('user', serialize(array_pop($results)));
  23. // 2.session方式
  24. $_SESSION['user']= serialize(array_pop($results));
  25. exit('<script>alert("验证通过");location.href="index.php"</script>');
  26. } else {
  27. exit('<script>alert("账号或密码错误,或者还没有帐号");location.href="login.php";</script>');
  28. }
  29. } else {
  30. die('请求类型错误');
  31. }
  32. break;
  33. // 退出
  34. case 'logout':
  35. // 1.cookie方式
  36. if (isset($_COOKIE['user'])) {
  37. setcookie('user', null , time()-3600);
  38. exit('<script>alert("退出成功");location.assign("login.php")</script>');
  39. }
  40. // 2.session方式
  41. if (isset($_SESSION['user'])) {
  42. session_destroy();
  43. exit('<script>alert("退出成功");location.assign("login.php")</script>');
  44. }
  45. break;
  46. // 注册
  47. case 'reg':
  48. // 1. 获取到所有新用户数据
  49. $username = $_POST['username'];
  50. $password = sha1($_POST['p1']);
  51. $regtime = time();
  52. // 2. 将新用户插入到表中
  53. $sql = "INSERT `users` SET `username`='{$username}', `password`='{$password}', `regtime`={$regtime}";
  54. $stmt = $pdo->prepare($sql);
  55. $stmt->execute();
  56. if ($stmt->rowCount() === 1) exit('<script>alert("注册成功");location.assign("login.php")</script>');
  57. else exit('<script>alert("注册失败");location.assign("login.php")</script>');
  58. break;
  59. // 未定义
  60. default:
  61. exit('未定义操作');
  62. }

1.3运行效果

-cookie登陆验证

-cookie重复登陆验证

-session登陆验证

-session重复登陆验证

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