【问题标题】:php session: page still accessible after logging outphp会话:注销后页面仍然可以访问
【发布时间】:2021-10-17 08:43:52
【问题描述】:

我正在尝试构建一个 php 会话登录系统。目前,我遇到了一些问题。仪表板页面(成功登录后)确实显示会话用户名,仪表板页面即使在注销后仍可访问。这是我的代码

login.php

session_start();
    include('dbconfig.php');
        if (isset($_SESSION['username'])){
            header('Location:dashboard.php');
        }

 if(isset($_POST['btn'])){
            $username=$_POST['username'];
            $password=$_POST['password'];
            if(empty($username)){
                echo "Required field: You must enter username";
            }elseif(empty($password)){
                echo "Required field: You must enter password";
            }else{
           
            $stmt=$pdo->prepare("SELECT * FROM admin WHERE username=:username AND password=:password" );
            $stmt->bindParam('username',$username);
            $stmt->bindParam('password',$password);
                $stmt->execute();
                $row=$stmt->fetch(PDO::FETCH_ASSOC);
              
                    if($row>0){
                        $_SESSION["username"]=$_POST["username"];
                          
                        header('Location:dashboard.php');
                        
                    }else{
                         echo "Username or Password does not match";
                    }
            }
        }

dashboard.php

 <?php     
        session_start();
       include('dbconfig.php');
        if (!isset($_SESSION['username']) ){
            header('Location:login.php');
        }
    ?>    

 <h5 class="text-white"><?php echo $_SESSION['username'] ?></h5>

logout.php

<?php  
    session_start();
   session_unset();
    session_destroy();
     header('Location:login.php');

【问题讨论】:

  • 在每个header('Location: login.php'); 后面加一个die(); 并在Location: 后面加一个空格,我认为这样可以解决问题
  • @Daantje 感谢您的帮助。不幸的是,它没有用。我最终得到了一个空白的仪表板页面。
  • 您是否开启了 PHP 错误报告?
  • dbconfig.php的内容是什么?
  • 切勿以明文形式或使用 MD5/SHA1 存储密码! 仅存储使用 PHP 的 password_hash() 创建的密码哈希,然后您可以使用 password_verify() 进行验证。看看这个帖子:How to use password_hash 并了解更多关于bcrypt & password hashing in PHP

标签: php session pdo


【解决方案1】:

您必须在代码中添加分号:

<h5 class="text-white"><?php echo $_SESSION['username']; ?></h5>

【讨论】:

  • 谢谢,但没有任何区别@robin
  • 他们为什么需要一个分号?已经有?&gt; 是同一个东西
猜你喜欢
  • 2013-11-08
  • 1970-01-01
  • 2014-06-23
  • 2021-09-26
  • 2014-09-06
  • 2015-04-02
  • 1970-01-01
  • 2016-10-27
  • 2012-05-16
相关资源
最近更新 更多