Функция входа в PHP не работает, когда я включаю sha1 - PullRequest
1 голос
/ 22 декабря 2011

У меня есть страница PHP, которая регистрирует и регистрирует пользователей.Когда я включаю sha1, пользователь создается и зашифрованный пароль сохраняется в БД, но он не может войти в систему. Когда я закомментирую строку для шифрования как в разделе создания пользователя, так и в разделе входа, все работает.Вот мой код для создания пользователя:

function add_member($nick_name, $email_address, $password) {
    global $db;
    $password = sha1($password);
    $query = "INSERT INTO members
                  (nick_name, email_address, password)
              VALUES
                  ('$nick_name', :email_address, :password)";
    $statement = $db->prepare($query);
    $statement->bindValue(':email_address', $email_address);
    $statement->bindValue(':password', $password);
    $statement->execute();
    $statement->closeCursor();
}

Вот мой код для проверки пользователя:

function is_valid_member($email_address, $password) {
    global $db;
    $password = sha1($password);
    $query = "SELECT member_ID 
              FROM members
              WHERE email_address = :email_address AND password = :password";
    $statement = $db->prepare($query);
    $statement->bindValue(':email_address', $email_address);
    $statement->bindValue(':password', $password);
    $statement->execute();
        $valid = ($statement->rowCount() == 1);
    $statement->closeCursor();
    return $valid;
}

Опять же, когда я закомментирую "$ password = sha1 ($пароль);"в обоих разделах все работает, но пароль является открытым текстом.

Спасибо!

1 Ответ

2 голосов
/ 22 декабря 2011

попробуйте выполнить отладку следующим образом: введите $ password = sha1 ($ password); и проверьте запись в вашей базе данных, возможно, длина вашего типа данных урезана, а текст сохранен в пароле

...