Blogger Information
Blog 29
fans 0
comment 0
visits 26999
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础:利用cookie与session实现用户的注册登陆与验证
暴宇
Original
1981 people have browsed it

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重复登陆验证

Correcting teacher:天蓬老师天蓬老师

Correction status:unqualified

Teacher's comments:没有总结
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!