переменная сеанса не переносится.Почему это так? - PullRequest
0 голосов
/ 29 января 2019

Это мой код входа в систему:

<!DOCTYPE = html>
<html lang="nl">
<head>
    <title>
        Bioscoop
    </title>
    <link rel="stylesheet" href="css/style.css"/>
    <?php
        include('config.php');
    ?>
</head>
<body>
    <?php
    if(isset($_POST["login"]))  
    {  
         if(empty($_POST["username"]) || empty($_POST["password"]))  
         {  
              $message = '<label>Vul alle velden in</label>';  
         }  
         else   
         {  
              $query = "SELECT * FROM admins WHERE username = :username AND password = :password";  
              $statement = $con->prepare($query);  
              $statement->execute(  
                   array(  
                        'username'     =>     htmlspecialchars($_POST["username"]),  
                        'password'     =>     htmlspecialchars($_POST["password"])  
                   )  
              );  




              $count = $statement->rowCount();  
              if($count > 0)  
              {  
                   $_SESSION["username"] = $_POST["username"]; 
                   $username = $_SESSION["username"];
                   $query = "SELECT rol FROM admins WHERE username = :username";

                   $stm = $con->prepare($query);
                   $stm->bindParam(':username', $username, PDO::PARAM_STR, 20);
                   $stm->execute();
                   $result = $stm->fetchAll(PDO::FETCH_OBJ);
                   foreach ($result as $pers) {
                       $rol = $pers->rol; 
                       $_SESSION["rol"] = $rol; 
                      if($_SESSION["rol"] == 'admin') {
                          header("location:logged.php");  
                      } else {
                          header("location:login.php");  
                      }
                   } 
              }  
              else  
              {  
                   $message = '<label>Verkeerde Gegevens</label>';  
              }  
         }  
    }  
    ?>
    <header class = "head">
        <img id = "hoofdlogo" src = "img/cinema.png" alt="Logo cinema">
        <p id="copyright">&copy;JopRill</p>
    </header>

    <nav>
        <ul>
            <li><p><a href="index.php"> Home </a></p></li>
            <li><p><a href="films.php"> Films </a></p></li>
            <li><p><a href="#"> Login </a></p></li>
        </ul>
    </nav>

    <form method="post">
                        <div class="form" >
                        <div id="num1"><h2>Login</h2></div>
                            <label><p>Gebruikersnaam</p></label>
                            <input type="text" name="username" id="ContactName" value=""/>
                            <label><p>Wachtwoord</p></label>
                            <input type="password" name="password" id="ContactEmail" value="" />
                            <p></p>
                            <input type="submit" name="login" id="submit" value="Login" />
                            <?php  
                                if(isset($message))  
                                {  
                                    echo '<label class="text-danger">'.$message.'</label>';  
                                }  
                            ?>
                        </div>
                    </form> 
</body>
</html>

и это мой код страницы входа в систему:

<?php
session_start();
?>
<!DOCTYPE = html>
<html lang="nl">
<head>
    <title>
        Bioscoop
    </title>
    <link rel="stylesheet" href="css/style.css"/>

</head>
<body>
<?php
        include('config.php');



    ?>
    <header class = "head">
        <img id = "hoofdlogo" src = "img/cinema.png" alt="Logo cinema">
        <p id="copyright">&copy;JopRill</p>
    </header>

    <nav>
        <ul>
            <li><p><a href="logout.php"> Logout </a></p></li>
        </ul>
    </nav>
    <?php echo $_SESSION["rol"]; ?>
</body>
</html>

В коде страницы входа я сохраняю "rol" всеанс.Кажется, это работает, потому что когда я нажимаю на кнопку входа в систему, меня перенаправляют на страницу logged.php, но когда я пытаюсь отобразить ту же переменную сеанса, которую я использовал для входа в систему, он говорит, что она не определена.В чем причина этого?

1 Ответ

0 голосов
/ 29 января 2019

Для обработки $_SESSION переменных вам всегда нужно начинать сеанс с session_start();

Посетителю, обращающемуся к вашему веб-сайту, присваивается уникальный идентификатор, так называемый идентификатор сеанса.Он либо сохраняется в файле cookie на стороне пользователя, либо распространяется по URL.

Поддержка сеансов позволяет хранить данные между запросами в суперглобальном массиве $ _SESSION.Когда посетитель получает доступ к вашему сайту, PHP автоматически проверит (если для session.auto_start установлено значение 1) или по вашему запросу (явно через session_start () ), был ли передан определенный идентификатор сеанса с запросом.В этом случае ранее сохраненная среда воссоздается.

Подробнее об этом читайте здесь: http://php.net/manual/en/intro.session.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...