Страница входа обновляется независимо от того, введена ли правильная информация для входа - PullRequest
2 голосов
/ 16 марта 2019

У меня есть страница входа в систему, которая независимо от того, что ввод (правильный вход или нет), страница просто обновляется при нажатии кнопки «войти». Я выполнил поиск по переполнению стека, и ничто еще не решило мою проблему.

Код страницы входа в систему

    <?php
        session_start();

        if(isset($_SESSION['login'])) {
          header('LOCATION: test-page.php'); die();
        }
        echo isset($_SESSION['login']);
    ?>

Форма страницы входа

<!DOCTYPE html>
<html>
   <head>
     <meta charset='utf-8'>
     <title>Login</title>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
     <link rel="stylesheet" href="styles.css">
   </head>
<body>
  <div class="form-container">
    <div class="image"></div>
      <div class="form">
          <form>
                    <h1>Login</h1>
                    <ul>
                        <li>
                            <input class="input" type="text" id="username" autocomplete="off">
                            <label for="username">Username</label>
                            <span></span>
                        </li>
                        <li>
                            <input class="input" type="password" id="password" autocomplete="off">
                            <label for="password">Password</label>
                            <span></span>
                        </li>
                    </ul>
                    <footer>
                        <button type="submit" class="gradient">Login</button>
                    </footer>
                </form>

Страница входа Имя пользователя и пароль

          <?php
      if(isset($_POST['submit'])){
        $username = $_POST['username']; $password = $_POST['password'];
        if($username === 'admin' && $password === 'password'){
          $_SESSION['login'] = true; header('LOCATION: test-page.php'); die();
        } elseif ($username === 'billy' && $password === 'bob') {
          $_SESSION['login'] = true; header('LOCATION: test-page.php'); die();
        } else {
          echo "<div class='alert alert-danger'>Username and Password do not match.</div>";
        }

      }
    ?>
      </div>
    </div>
    <script src="login.js"></script>
</body>
</html>

Страница после успешного входа в систему

<?php

    session_start();
    if(!isset($_SESSION['login'])) {
        header('LOCATION: login.php'); die(); // mlac-resources-login.php
    }
?>

Страница входа разделена для удобства чтения, но все это один непрерывный блок кода.

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Метод по умолчанию для формы GET , и вы обрабатываете POST . Либо установите method на post, либо используйте $_GET при обработке формы.

<form method="post">
   ...

или

if (isset($_GET['submit'])){
    ...
0 голосов
/ 16 марта 2019

Перенаправления (или любой другой тип заголовка в этом отношении) не требуют ОТХОДА ВЫВОДА для его работы.

Выходы включают в себя:

  • Эхо-команды
  • <!DOCTYPE html>
  • Даже любой пробел может сломать его!(Новые строки или пробелы)

Например:

<?php
    session_start();
    echo isset($_SESSION['login']); //Output
    if(isset($_SESSION['login'])) {
      header('LOCATION: test-page.php'); die(); //Won't work since there's already output...
    }
?>

Попробуйте изменить код на:

<?php
    session_start();

    if(isset($_SESSION['login'])) {
      header('LOCATION: test-page.php'); die(); //This should work now!
    }
    echo isset($_SESSION['login']); //Output goes here!
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...