Проверка переменной $ _SESSION ведет к пустой странице PHP / без содержимого

1

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

LOGIN PHP (отлично работает)

<?php
session_start();
require_once("../inc_files/Lesson_5_DB_Connection.php"); 
error_reporting(E_ALL);
ini_set('display_errors', 1);

    $error_message= "";
    $user_name = "";
    $user_password= "";
    $_SESSION['username']="";
    $_SESSION['employeeNumber']="";

    if (isset($_POST['submit'])) {

        $user_name = $_POST['user'];
        $user_password= $_POST['pass'];



        // ADD QUERY TO CHECK IF USER/PASS COMBO IS CORRECT
        if(!empty($user_name) && !empty($user_password)) {

        $query = "SELECT * FROM employees WHERE username='$user_name' and password='$user_password'";

        $result = mysqli_query($dbc, $query)
            or die ('Error querying username/password request');

            if(mysqli_num_rows($result) == 1) {

             while ($row = mysqli_fetch_array($result)) {
                $_SESSION['username'] = $row['username'];
                $_SESSION['employeeNumber'] = $row['employeeNumber'];
             }

                 header("Location: /LESSON5/3%20-%20HOMEPAGE%20:%20WELCOME.php");
                exit;

            } // end if rows

            else {
                $error_message = "You were not able to log in";
            } // end else

        // Direct to other webpage

        } // end query

    } // end isset
?>

Домашняя страница должна отображаться только в том случае, если установлены переменные $ _SESSION. Если пользователь не зарегистрирован (переменные сеанса не установлены), то домашняя страница должна перенаправляться на страницу входа. Теперь я добавил проверку, чтобы проверить, не установлены ли переменные (! Isset). Эта проверка не позволяет странице показывать какой-либо контент. Когда я удаляю эту проверку, HTML отображается нормально. Когда я удаляю проверку и эхо значения переменных, я получаю возвращаемые значения.

Это просто if(!isset($_SESSION['username']) && !isset($_SESSION['employeeNumber']) не отображая никакого содержимого на странице.

ГЛАВНАЯ

<?php
    session_start();
    require_once("../inc_files/Lesson_5_DB_Connection.php");

    if(!isset($_SESSION['username']) && !isset($_SESSION['employeeNumber']) {

        header("Location: /LESSON5/1%20-%20LOGIN.php");
    }
?>

    <!DOCTYPE html>
    <head>
        <title></title>
          <meta charset="utf-8">
          <link type="text/css" rel="stylesheet" href="/LESSON5/5_Signup_CSS.css">
    </head>

    <body>
        <p><span id="logout"><a href="/LESSON5/4%20-%20LOGOUT%20PAGE.PHP">Logout</a></span></p>
        <hr>
        <h1>Welcome to my homepage! <br> You have successfully logged in.</h1>

    <?php
        mysqli_close($dbc);
    ?>

    </body>

    </html>

Есть ли какая-то причина, почему эта проверка не позволяет PHP показывать HTML (если вход пользователя правильный) или перенаправить страницу (если пользователь не вошел в систему)?

  • 3
    Опечатка, закрывающий абзац отсутствует: if(!isset($_SESSION['username']) && !isset($_SESSION['employeeNumber'])) .
  • 2
    Я считаю, что вы получаете пустую страницу из-за ошибки php (поскольку ваш сервер может быть настроен на error_display false). Добавьте «родительские» скобки к вашему условию: if( (condition A) && (condition B) )
Показать ещё 2 комментария
Теги:
validation
session

1 ответ

1
Лучший ответ

В основном ошибка в вашем состоянии php if. Отсутствует одна скобка. измените вот так: -

if(!isset($_SESSION['username']) && !isset($_SESSION['employeeNumber']))

Примечание. - Попробуйте добавить error_reporing в верхней части всех ваших php-страниц, чтобы вы могли получить php-ошибки, если это произойдет. проверьте руководство пользователя error_reporing на сайте php. Благодарю.

Если вы работаете на локальном сервере, вы можете изменить настройки php.ini для этого.

Вы можете узнать, как легко изменить настройки php.ini в Google.

ini_set - это функция php для этой цели, если вы хотите сделать это программно не напрямую с php.ini.

  • 0
    @ Иша ты получил решение или нет?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню