Требуется помощь по PHP PDO - PullRequest
       1

Требуется помощь по PHP PDO

1 голос
/ 19 февраля 2011

Я пытаюсь получить идентификатор пользователя, который только что вошел в систему, и сохранить его в $ _SESSION ['UserID'], однако это не так.

Не хранит его. Array ( [LoggedIn] => 1 [UserID] => )

// Database Connection File
    require("../system/config.php");

    $user['username'] = $_POST['username'];
    $user['password'] = md5($_POST['password']);

    $login_check = $DBH->prepare("SELECT Username, Password FROM Users WHERE Username = ? AND Password = ?");
    $login_check->execute(array($user['username'], $user['password']));

    if(count($login_check) == 1) {
        session_start();
        $row = $login_check->fetch();
        $_SESSION['LoggedIn'] = 1;
        $_SESSION['UserID'] = $row['UserID'];
        print_r($_SESSION);
    }

    else {
        echo "You have entered an incorrect Username and Password, please try again.";
    }

1 Ответ

3 голосов
/ 19 февраля 2011

Редактировать: Ответ, который вы, вероятно, ищете, заключается в том, что вы не выбираете UserID в своем запросе.Но вы все равно должны посмотреть на то, что я написал ниже.


Вы должны использовать if ($login_check->rowCount() == 1) вместо count()

В качестве альтернативы, было бы лучше fetch()пароль для имени пользователя и проверьте его в php, чтобы убедиться, что это правильно, потому что тогда вы можете обнаружить и сохранить попытки ввода неверного пароля для каждого пользователя и, возможно, на время запретить доступ, если их было слишком много.

$login_check = $DBH->prepare("SELECT UserID, Password FROM Users WHERE Username = ?");
$login_check->execute(array($user['username']));
$row = $login_check->fetch();

if (!empty($row)) {
    // user exists
    if ($row['Password'] == $user['password']) {
        // login success
    }
    else {
        // bad password attempt
    }
}
else {
    // non-existant user
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...