Blogger Information
Blog 34
fans 0
comment 0
visits 21642
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
11月22日_session用户登录实战 - 九期线上班
只猫
Original
561 people have browsed it

SESSION实现用户登录、记录、退出登录

连接数据库 connect.php

  1. <?php
  2. $db = [
  3. 'type' => 'mysql',
  4. 'host' => 'localhost',
  5. 'dbname' => 'php_2019',
  6. 'username' => 'root',
  7. 'password' => '********'
  8. ];
  9. $dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
  10. $username = $db['username'];
  11. $password = $db['password'];
  12. try{
  13. $pdo = new PDO($dsn,$username,$password);
  14. }catch(PDOException $e){
  15. die('连接失败'.$e->getMessage());
  16. }

user表已创建

1.index.php

  1. <?php
  2. session_start();
  3. //主页
  4. if(isset($_SESSION['name']))
  5. {
  6. echo '用户:'.$_SESSION['name'].'已登录<br>';
  7. echo '<a href="dispatch.php?action=logout">退出登录</a>';
  8. }else{
  9. echo '<a href="dispatch.php?action=login">请登录</a>';
  10. }

2.dispatch.php

  1. <?php
  2. //开启会话
  3. session_start();
  4. //请求连接数据库
  5. require __DIR__ . '/connect.php';
  6. //获取请求参数
  7. $action = isset($_GET['action']) ? $_GET['action'] : 'login';
  8. $action = htmlentities(strtolower(trim($action)));
  9. //请求路由
  10. switch ($action){
  11. case 'login':
  12. include __DIR__.'/login.php';
  13. break;
  14. case 'check':
  15. include __DIR__.'/check.php';
  16. break;
  17. case 'logout':
  18. include __DIR__.'/logout.php';
  19. break;
  20. default:
  21. header('Location:index.php');
  22. echo '<script>location.assign("index.php");</script>';
  23. }

3.login.php

  1. <?php
  2. if(isset($_SESSION['name'])){
  3. echo '<script>alert("您已登录,请不要重复登录");location.assign("index.php");</script>';
  4. }
  5. ?>
  6. <!DOCTYPE html>
  7. <html lang="en">
  8. <head>
  9. <meta charset="UTF-8">
  10. <title>用户登录</title>
  11. </head>
  12. <body>
  13. <h3>用户登录</h3>
  14. <form action="dispatch.php?action=check" method="post">
  15. <p>
  16. <label for="name">用户名:</label>
  17. <input type="text" name="name" id="name">
  18. </p>
  19. <p>
  20. <label for="password">密码:</label>
  21. <input type="password" name="password" id="password">
  22. </p>
  23. <p><button>登录</button></p>
  24. </form>
  25. </body>
  26. </html>

4.check.php

  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] === 'POST'){
  3. if(!empty($_POST['name']) && !empty($_POST['password'])){
  4. $name = $_POST['name'];
  5. $password = $_POST['password'];
  6. $sql = 'SELECT * FROM `user` WHERE `username` = :username AND `password` = :password LIMIT 1';
  7. $stmt = $pdo->prepare($sql);
  8. $stmt->execute(['username'=>$name,'password'=>$password]);
  9. $user = $stmt->fetch(PDO::FETCH_ASSOC);
  10. }else{
  11. echo '<script>alert("用户名或密码未填写");location.assign("login.php");</script>';
  12. }
  13. if($user === false){
  14. echo '验证失败';
  15. die;
  16. }
  17. //验证成功 写入session
  18. $_SESSION['name'] = $user['username'];
  19. echo '<script>alert("登录成功");location.assign("index.php");</script>';
  20. exit;
  21. }else{
  22. die('请求类型错误');
  23. }

5.logout.php

  1. <?php
  2. if(isset($_SESSION['name'])){
  3. //清除session
  4. session_destroy();
  5. echo '<script>alert("退出成功");location.assign("index.php");</script>';
  6. }else{
  7. echo '<script>alert("请先登录");location.assign("index.php")</script>';
  8. }

index.php

login.php

index.php

logout.php

手抄:

总结:经过这次课程,搞明白了session和cookie的作用和它们的区别。以前对这两个概念只是知道也看了很多遍相关的知识,但是不会用。cookie和session用于在同一个网站项目中不同的页面之间传递用户数据,让用户实现只输入一次数据就可以把数据保存下来在每一个页面中都可以使用。课上老师介绍的很清楚。session数据存在服务端,session的id以cookie的形式保存在客户端以便于服务器区分用户对应的是哪个session文件。

Correcting teacher:查无此人查无此人

Correction status:qualified

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!