php哈希函数检查数据库

php哈希函数检查数据库,php,sql,oop,Php,Sql,Oop,在将新用户插入数据库时,我希望对密码进行哈希运算。这就是我得到的 static function getLastId(){ global $database; $sql = 'SELECT ID from users ORDER BY id DESC LIMIT 1' ; $result = $database->query($sql); return $result; } sta

在将新用户插入数据库时,我希望对密码进行哈希运算。这就是我得到的

    static function getLastId(){
        global $database; 
        $sql = 'SELECT ID from users ORDER BY id DESC LIMIT 1' ;
        $result = $database->query($sql);           
        return $result; 
    }


static function create_user($username,$password ){
    global $database;
    $lastID =  self::getLastId() + 1;       
    $ePassword = $database->escape_value($password);
    $hash = hash('sha256', $lastID . $ePassword);
    $sql = "INSERT INTO ". self::$table_name . " (username, password, first_name, last_name, power ) VALUES ";
    $sql .= "('{$database->escape_value($username)}', '{$hash}', 'asd' , 'asd', 'user') ";
    $query = $database->query($sql);
    return ($query)? true : false; 
}
当我对$lastID进行打印或var转储时,我得到13。但是,在数据库中,我只有一个用户me,ID为1。我甚至截断了桌子,但我仍然得到13。不知道为什么

基本上,我想在密码后面加上$lastID,这样就很难撤销。我需要知道下一个ID是什么,以便登录

$result = $database->query($sql);           
return $result; 
您返回的是结果资源而不是实际数据(我假设是这样,除非$database模块自动执行此操作),您可能希望:

$result = $database->query($sql);    
$data = mysql_fetch_array($result);
return $data['ID']; 

你应该用盐来代替这个新主意。您可以在这里了解它:与其使用sha256,不如尝试使用更安全的算法,如bcrypt: