Вход на страницу без перенаправления на index.php после ввода правильных данных без отображения ошибки

Я разрабатываю систему входа в систему для своего веб-сайта с использованием php 7. Страница входа перенаправляется на index.php, когда я использую следующий код.

if(isset($_SESSION['username'])){
    header('Location: login.php');
}

Но не удается перенаправить на index.php или любую страницу, когда я использую

if(!isset($_SESSION['username'])){
        header('Location: login.php');
    }

Я использую !isset, чтобы убедиться, что пользователь не перейдет прямо на страницу, набрав ее URL-адрес в браузере. Это делается для того, чтобы вы были перенаправлены обратно на страницу входа, чтобы избежать несанкционированного доступа в панель администратора. Но это скорее не вход в систему, даже если введены правильные данные.

ЛОГИН.PHP

<?php
ob_start();
session_start();
require_once('../inc/db.php');

if(isset($_POST['submit'])){
    $username = mysqli_real_escape_string($con,strtolower($_POST['username']));
    $password = mysqli_real_escape_string($con,$_POST['password']);

    $check_username_query = "SELECT * FROM users WHERE username = '$username'";
    $check_username_run = mysqli_query($con, $check_username_query);
    if(mysqli_num_rows($check_username_run) > 0){
        $row = mysqli_fetch_array($check_username_run);

        $db_username = $row['username'];
        $db_password = $row['password'];
        $db_role = $row['role'];

        $password = crypt($password, $db_password);

        if($username == $db_username && $password == $db_password){
            header('Location: index.php');
            $_SESSION['username'] = $db_username;
            $_SESSION['role'] = $db_role;
        }
        else{
            $error = "Wrong Username or Password";
        }
    }
    else{
        $error = "Wrong Username or Password";
    }
}

?>

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Jekyll v3.8.5">
    <link rel="icon" href="img/circleda.png">
    <title>Login | Amasiatu Admin</title>

    <!-- Bootstrap core CSS -->
    <link href="css/animate.css" rel="stylesheet">
    <link href="css/bootstrap.min.css" rel="stylesheet">


    <style>
      .bd-placeholder-img {
        font-size: 1.125rem;
        text-anchor: middle;
      }

      @media (min-width: 768px) {
        .bd-placeholder-img-lg {
          font-size: 3.5rem;
        }
      }
    </style>
    <!-- Custom styles for this template -->
    <link href="login.css" rel="stylesheet">
  </head>
  <body class="text-center">


 <form class="form-signin animated shake" action="" method="post">
  <div class="login-logo" style="margin: 0 auto; margin-bottom: 18px">A</div>
  <h1 class="h3 mb-3 font-weight-normal">Amasiatu Login!</h1>
  <label for="inputEmail" class="sr-only">Username</label>
  <input type="text" id="inputEmail" name="username" class="form-control" placeholder="username" required autofocus>
  <label for="inputPassword" class="sr-only">Password</label>
  <input type="password" id="inputPassword" name="password" class="form-control" placeholder="Password" required>

  <input type="submit" name="submit" value="Sign In" class="btn btn-lg btn-primary btn-block">

  <div class="checkbox ">
    <label>
      <?php
     if(isset($error)){
         echo "$error";
     }
     ?>
    </label>
  </div>

  <p class="mt-5 mb-3 text-muted year">&copy; 2018-2019</p>
</form>
</body>
</html>

ИНДЕКС.PHP

<?php require_once ('inc/top.php'); 

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

  </head>
  <body>

    <div id="wrapper">

     <?php require_once ('inc/header.php'); ?>

       <div class="container-fluid body-section">
           <div class="row">


               <div class="col-md-3">
                 <?php require_once ('inc/sidebar.php'); ?>
               </div>


               <div class="col-md-9">
                   <h1><i class="fas fa-tachometer-alt"></i> Dashboard <small style="color: #495057">Statistics Overview</small></h1><hr>

                    <nav aria-label="breadcrumb">
                      <ol class="breadcrumb">
                        <li class="breadcrumb-item active" aria-current="page"><i class="fas fa-tachometer-alt"></i> Dashboard</li>
                      </ol>
                    </nav>

                    <div class="row tag-boxes">
                        <div class="col-md-6 col-lg-3">
                            <div class="panel panel-blue">
                                <div class="panel-heading">

                                   <div class="row">
                                       <div class="col-xs-3">
                                            <i class="fas fa-comments fa-5x"></i>
                                       </div>

                                       <div class="col-xs-9">
                                            <div class="text-right huge">11</div>
                                            <div class="text-right">New Comment</div>
                                       </div>

                                   </div> 

                                </div>
                                <a href="">
                                    <div class="panel-footer">
                                        <span class="float-left">View All Comments</span>
                                        <span class="float-right"><i class="fas fa-arrow-circle-right"></i></span>
                                        <div class="clearfix"></div>
                                    </div> 
                                </a>
                            </div>
                        </div>


                        <div class="col-md-6 col-lg-3">
                            <div class="panel panel-red">
                                <div class="panel-heading">

                                   <div class="row">
                                       <div class="col-xs-3">
                                            <i class="fas fa-file-alt fa-5x"></i>
                                       </div>

                                       <div class="col-xs-9">
                                            <div class="text-right huge">20</div>
                                            <div class="text-right">All Posts</div>
                                       </div>

                                   </div> 

                                </div>
                                <a href="">
                                    <div class="panel-footer">
                                        <span class="float-left">View All Posts</span>
                                        <span class="float-right"><i class="fas fa-arrow-circle-right"></i></span>
                                        <div class="clearfix"></div>
                                    </div> 
                                </a>
                            </div>
                        </div>


                        <div class="col-md-6 col-lg-3">
                            <div class="panel panel-yellow">
                                <div class="panel-heading">

                                   <div class="row">
                                       <div class="col-xs-3">
                                            <i class="fas fa-users fa-5x"></i>
                                       </div>

                                       <div class="col-xs-9">
                                            <div class="text-right huge">41</div>
                                            <div class="text-right">All Users</div>
                                       </div>
                                   </div> 

                                </div>
                                <a href="">
                                    <div class="panel-footer">
                                        <span class="float-left">View All Users</span>
                                        <span class="float-right"><i class="fas fa-arrow-circle-right"></i></span>
                                        <div class="clearfix"></div>
                                    </div> 
                                </a>
                            </div>
                        </div>


                        <div class="col-md-6 col-lg-3">
                            <div class="panel panel-green">
                                <div class="panel-heading">

                                   <div class="row">
                                       <div class="col-xs-3">
                                            <i class="fas fa-folder-open fa-5x"></i>
                                       </div>

                                       <div class="col-xs-9">
                                            <div class="text-right huge">8</div>
                                            <div class="text-right">All Categories</div>
                                       </div>
                                   </div> 

                                </div>
                                <a href="">
                                    <div class="panel-footer">
                                        <span class="float-left">View All Categories</span>
                                        <span class="float-right"><i class="fas fa-arrow-circle-right"></i></span>
                                        <div class="clearfix"></div>
                                    </div> 
                                </a>
                            </div>
                        </div>


                    </div><hr>

                    <h3>New Users</h3>
                    <table class="table table-hover table-striped">
                        <thead>
                            <tr>
                                <th>SN #</th>
                                <th>Date</th>
                                <th>Name</th>
                                <th>Username</th>
                                <th>Role</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>1</td>
                                <td>18 Jan 2019</td>
                                <td>Val Amasiatu</td>
                                <td>Computacity</td>
                                <td>Admin</td>
                            </tr>
                            <tr>
                                <td>2</td>
                                <td>18 Jan 2019</td>
                                <td>Val Amasiatu</td>
                                <td>Computacity</td>
                                <td>Admin</td>
                            </tr>
                            <tr>
                                <td>3</td>
                                <td>18 Jan 2019</td>
                                <td>Val Amasiatu</td>
                                <td>Computacity</td>
                                <td>Admin</td>
                            </tr>
                            <tr>
                                <td>4</td>
                                <td>18 Jan 2019</td>
                                <td>Val Amasiatu</td>
                                <td>Computacity</td>
                                <td>Admin</td>
                            </tr>
                            <tr>
                                <td>5</td>
                                <td>18 Jan 2019</td>
                                <td>Val Amasiatu</td>
                                <td>Computacity</td>
                                <td>Admin</td>
                            </tr>

                        </tbody>
                    </table>

                    <a href="#" class="btn btn-primary">View All Users</a><hr>

                    <h3>New Posts</h3>
                    <table class="table">
                        <thead>
                            <tr>
                                <th>SN #</th>
                                <th>Date</th>
                                <th>Post Title</th>
                                <th>Category</th>
                                <th>Views</th>
                            </tr>
                        </thead>

                        <tbody>
                            <tr>
                                <td>1</td>
                                <td>18 Jan 2019</td>
                                <td>Learn Python and build a Complete Project</td>
                                <td>Video Tutorials</td>
                                <td><i class="far fa-eye"></i> 35</td>
                            </tr>
                            <tr>
                                <td>2</td>
                                <td>18 Jan 2019</td>
                                <td>Learn Python and build a Complete Project</td>
                                <td>Video Tutorials</td>
                                <td><i class="far fa-eye"></i> 35</td>
                            </tr>
                            <tr>
                                <td>3</td>
                                <td>18 Jan 2019</td>
                                <td>Learn Python and build a Complete Project</td>
                                <td>Video Tutorials</td>
                                <td><i class="far fa-eye"></i> 35</td>
                            </tr>
                            <tr>
                                <td>4</td>
                                <td>18 Jan 2019</td>
                                <td>Learn Python and build a Complete Project</td>
                                <td>Video Tutorials</td>
                                <td><i class="far fa-eye"></i> 35</td>
                            </tr>
                            <tr>
                                <td>5</td>
                                <td>18 Jan 2019</td>
                                <td>Learn Python and build a Complete Project</td>
                                <td>Video Tutorials</td>
                                <td><i class="far fa-eye"></i> 35</td>
                            </tr>
                        </tbody>
                    </table>
                    <a href="#" class="btn btn-primary">View All Posts</a>
               </div>
           </div>
       </div>


    <?php require_once ('inc/footer.php'); ?>

person Amasiatu Valentine    schedule 20.01.2019    source источник
comment
Примечание. Не используйте crypt() для хеширования паролей. Используйте password_hash() PHP и password_verify() вместо этого. Они специально созданы для хеширования паролей и дадут вам более сильные хэши.   -  person Magnus Eriksson    schedule 20.01.2019
comment
Его $_SESSION, я пытаюсь войти в систему, а не публиковать данные для хранения в базе данных. Мой код работает, если я удалю isset, а не !isset   -  person Amasiatu Valentine    schedule 20.01.2019
comment
У вас есть session_start() в inc/top.php? Если нет, сеанс, который вы ранее установили, не будет загружен, и вы будете проверять пустой сеанс. Вы также должны добавить exit; после любого header('location: ...');, чтобы остановить выполнение любого кода после.   -  person Magnus Eriksson    schedule 20.01.2019
comment
‹?php require_once('../inc/db.php'); ?› ‹!doctype html› ‹html lang=en› ‹head› ‹!-- Обязательные метатеги --› ‹meta charset=utf-8› ‹meta name=viewport content=width=device-width, initial-scale =1, сжатие по размеру=нет› ‹!-- Bootstrap CSS --› ‹ссылка rel=icon href=img/circleda.png› ‹ссылка rel=таблица стилей href=css/animate.css› ‹ссылка rel= таблица стилей href=fontawesome/css/all.css› ‹ссылка rel=таблица стилей href=css/bootstrap.min.css› ‹ссылка rel=таблица стилей href=style-admin.css› ‹название›Amasiatu | Админ‹/название›   -  person Amasiatu Valentine    schedule 20.01.2019
comment
Я добавил session_start(); к коду, и все заработало как по волшебству. Так благодарен. Спасибо.   -  person Amasiatu Valentine    schedule 20.01.2019
comment
Как я могу дать вам голос?   -  person Amasiatu Valentine    schedule 20.01.2019
comment
Возможный дубликат PHP session_start()   -  person Magnus Eriksson    schedule 20.01.2019
comment
Нет необходимости в голосовании. ИМХО, этот вопрос следует закрыть как дубликат, поскольку этот вопрос уже задавался и на него уже много раз здесь отвечали.   -  person Magnus Eriksson    schedule 20.01.2019
comment
Что вы имеете в виду под возможным дублированием session_start();   -  person Amasiatu Valentine    schedule 20.01.2019


Ответы (1)


Весьма вероятно, что не вошедший в систему пользователь получает некоторый вывод в "inc/top.php". Попробуй это:

<?php 
ob_start();
require_once ('inc/top.php'); 

if(!isset($_SESSION['username'])){
    header('Location: login.php');
    die();
}
?>
person Noobus    schedule 20.01.2019