将新用户插入数据库时,我想散列密码。这就是我所拥有的。
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.但是看一个数据库我只有1个用户,ID为1.我甚至截断了表,但我仍然得到13。确定为什么。
基本上我的想法是我想将$ lastID附加到密码,这样它就更难以反转。出于登录目的,我需要知道下一个ID是什么。
答案 0 :(得分:2)
$result = $database->query($sql);
return $result;
您将返回结果资源而不是实际数据(我假设,除非您的$ database模块自动执行此操作),您可能希望:
$result = $database->query($sql);
$data = mysql_fetch_array($result);
return $data['ID'];