Я получаю, что эта страница не работает и что она перенаправляется слишком много раз в PHP

#php #authentication #session #redirect

Вопрос:

Я знаю, что в основном страница перенаправляется на страницу, которая перенаправляет на первую страницу, но по какой-то причине я не могу найти ошибки в своем коде. В принципе, если сеанс не вошел в систему, перейдите на страницу входа / ничего не делайте, но если они вошли в систему, перенаправьте их в индекс.

  if (isset($_SESSION['loggedin'])) {
    if ($_SESSION['loggedin'] == null || $_SESSION['loggedin'] == "false") {
        $_SESSION['loggedin'] == "false";
    }
    elseif ($_SESSION['loggedin'] == "true") {
    header('location:index.php');
    }
}
 

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

1. Вы уверены, что значение $_SESSION['loggedin'] является строкой, а не логическим значением?

2. $_SESSION['loggedin'] == "false" это сравнение. Вам нужно использовать = для назначения.

3. как только вы войдете в систему, он всегда будет возвращать значение true. именно поэтому вы получаете бесконечное перенаправление.

Ответ №1:

Вы можете просто сделать это так 🙂

Это твой «index.php» на странице входа в систему:

 <?php 
session_start();
if(isset($_SESSION['loggedin'])){
header("location:your_dashboard.php"); //your main dashboard
}
?>
 

И это «your_dashboard.php» в вашей системе:

 <?php 
session_start();
if(!isset($_SESSION['loggedin'])){
header("location: index.php"); //index of your login page
}
?>