PHP - Сравнение хэша с базой данных не работает

Примечания:

  • Я все еще новичок в php
  • Эта форма входа в систему, кажется, работает отлично, если я не хэширую пароль.
  • Я пробовал md5, sha256 и теперь оставил его на sha1. Ничего из этого не работает.
  • Сначала я использовал echo sha1 ("пароль"); , чтобы узнать, какой будет хеш для моего пароля, затем я скопировал этот хеш и вставил его вручную с помощью phpMyAdmin. Я не уверен, в этом ли проблема или нет.

В любом случае, вот код:

<?php
session_start();
require("config.php");

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

    $username = mysql_real_escape_string($_POST['username']);
    $password = sha1(mysql_real_escape_string($_POST['password']));

    $loginsql = "SELECT * FROM login WHERE username = '" . $username .
    "' AND password = '" . $password . "'";
    $loginresult = mysql_query($loginsql);
    $loginnumrows = mysql_num_rows($loginresult);

    if($loginnumrows == 1) {
        $loginrow = mysql_fetch_assoc($loginresult);
        session_register("USERNAME");
        session_register("USERID");

        $_SESSION['USERNAME'] = $loginrow['username'];
        $_SESSION['USERID'] = $loginrow['id'];

        header("Location: " . $config_basedir . "controlpanel.php");
    }
    else{
        echo "<p>Incorrect Login, please try again!</p>";
    }
}
else{

}
?>

Я действительно не знаю, что с этим делать. Я уверен, что мой код мог бы быть более эффективным, но, как я уже упоминал в примечаниях, он работает, когда я не хэширую пароль. Спасибо за чтение.

0
задан finec 14 February 2012 в 22:02
поделиться