$ _SESSION无法在登录表单中工作

时间:2017-12-04 21:20:19

标签: php session pdo

如果插入了密码和用户名,则代码设置为设置变量。但$ _SESSION变量从未设置过,我不知道为什么,它只是将我重定向到登录页面。

loginform.php:

public static class ButtonMethods
{
    public static RoutedEventHandler ButtonClick => Button_Click;

    public static void Button_Click(object sender, RoutedEventArgs e)
    {
        // stuff
    }
}

我只想登录用户访问的页面: adminpage.php:

<?php
    $server = 'hiddenforthispost';
    $username = 'hiddenforthispost';
    $password = 'hiddenforthispost';
    $schema = 'hiddenforthispost';
    $pdo = new PDO('mysql:dbname=' . $schema . ';host=' . $server, $username, $password,
    [ PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION]);

                if (isset($_POST['Submit'])) {
                    if(empty($_POST['Username']) || empty($_POST['Password'])) {

                            echo '<p> You must insert all of the fields! </p>';
                        }
                        else {
                            $stmt = $pdo->prepare('SELECT * FROM logins 
                                WHERE login_name = :username');
                            $criteria = [
                                        'username' => $_POST['Username']
                                        ];
                            $stmt->execute($criteria);
                            $user = $stmt->fetchColumn(1);
                            echo $user;
                            if (password_verify($_POST['Password'], $user)) {
                                session_start();
                                $_SESSION['loggedin'];
                                header('location: adminpage.php');
                                }
                                else {
                                    echo '<p> Wrong password </p>';
                                }
                            }
                        }
        ?>

1 个答案:

答案 0 :(得分:0)

您永远不会在会话变量中添加任何内容。在一行上自己编写一个变量并不能为它赋予任何东西。

loginform.php中,行:

$_SESSION['loggedin'];

应该是这样的:

$_SESSION['loggedin'] = true;