принудительно отображать страницу входа в систему первой

#php #html

#php #HTML

Вопрос:

Моя страница входа в систему работает отлично.

Он не использует базу данных пользователей, он использует предопределенное имя пользователя и пароль в коде. Единственное, что я не могу сделать, это сначала отобразить страницу входа перед index.php . Любой может ввести index.php , и сайт откроется, поэтому он не использует страницу входа.

Вот мой login.php

 <?php
ob_start();
session_start();
?>

<html lang = "en">

<head>
  <title>Alpine VW Extension List</title>
  <link href = "css/bootstrap.min.css" rel = "stylesheet">

  <style>
     body {
        padding-top: 40px;
        padding-bottom: 40px;
        background-color: #ADABAB;
     }

     .form-signin {
        max-width: 330px;
        padding: 15px;
        margin: 0 auto;
        color: #017572;
     }

     .form-signin .form-signin-heading,
     .form-signin .checkbox {
        margin-bottom: 10px;
     }

     .form-signin .checkbox {
        font-weight: normal;
     }

     .form-signin .form-control {
        position: relative;
        height: auto;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
        padding: 10px;
        font-size: 16px;
     }

     .form-signin .form-control:focus {
        z-index: 2;
     }

     .form-signin input[type="email"] {
        margin-bottom: -1px;
        border-bottom-right-radius: 0;
        border-bottom-left-radius: 0;
        border-color:#017572;
     }

     .form-signin input[type="password"] {
        margin-bottom: 10px;
        border-top-left-radius: 0;
        border-top-right-radius: 0;
        border-color:#017572;
     }

     h2{
        text-align: center;
        color: #017572;
     }
  </style>

</head>

<body>

  <h2>Welcome, Please Login</h2> 
  <div class = "container form-signin">

     <?php
        $msg = '';

        if (isset($_POST["login"]) amp;amp; !empty($_POST["username"]) 
           amp;amp; !empty($_POST['password'])) {

           if ($_POST["username"] == "admin" amp;amp; 
              $_POST["password"] == "admin") {
              $_SESSION["valid"] = true;
              $_SESSION["timeout"] = time();
              $_SESSION["username"] = "admin";

              header("location:index.php");
           }else {
              $msg = 'Wrong username or password';
           }
        }
     ?>
  </div> <!-- /container -->

  <div class = "container">

     <form class = "form-signin" role = "form" 
        action = "<?php echo htmlspecialchars($_SERVER['PHP_SELF']); 
        ?>" method = "post">
        <h4 class = "form-signin-heading"><?php echo $msg; ?></h4>
        <input type = "text" class = "form-control" 
           name = "username" placeholder = "username = tutorialspoint" 
           required autofocus></br>
        <input type = "password" class = "form-control"
           name = "password" placeholder = "password = 1234" required>
        <button class = "btn btn-lg btn-primary btn-block" type = "submit" 
           name = "login">Login</button>
     </form>


  </div> 

</body>
</html>
  

Комментарии:

1. Проверьте логин на странице индекса — если они не вошли в систему, перенаправьте на страницу входа.

Ответ №1:

Вам нужно установить переменную сеанса, что-то вроде того, что вы сделали в приведенном выше коде, в порядке.

 $_SESSION["valid"] = true;
  

Затем на вашем index.php страница вам нужно запустить сеанс и проверить, установлена ли для допустимой переменной сеанса значение true, и если нет, перенаправить обратно на страницу входа в систему

 session_start();
if($_SESSION["valid"] != true){
    header("location: login.php");
}
  

Чтобы убрать это из своего комментария, вы просто помещаете это в начало своего index.php файл (очевидно, в PHP-тегах), и он будет проверять каждый раз, когда загружается ваша индексная страница.

Комментарии:

1. Здравствуйте, сэр @twigg спасибо за ответ. Как бы я поместил это в index.php поскольку я все еще учусь, и кто-то помог мне с этой частью.

2. Спасибо, это сработало отлично!! У меня есть еще один вопрос, если бы я мог. моя страница — это список контактов. с кнопками для добавления / удаления контактов. Есть ли способ, которым я могу сделать так, чтобы вам сначала нужно было войти в систему, прежде чем вы сможете добавлять / удалять контакты, но вы можете хотя бы увидеть, какие контакты уже есть.