Вопросы по работе SimpleMVC
Primary tabs
Выполняю задание http://fkn.ktu10.com/?q=node/10396
Хотел бы лучше для себя понять как работает хэширование пароля на примере функции insert(). Файл Adminusers.php:
public function insert()
{
$sql = "INSERT INTO $this->tableName (timestamp, login, salt, pass, role, email)"
. " VALUES (:timestamp, :login, :salt, :pass, :role, :email)";
$st = $this->pdo->prepare ( $sql );
$st->bindValue( ":timestamp", (new \DateTime('NOW'))->format('Y-m-d H:i:s'),
\PDO::PARAM_STMT);
$st->bindValue( ":login", $this->login, \PDO::PARAM_STR );
//Хеширование пароля
$this->salt = rand(0,1000000);
$st->bindValue( ":salt", $this->salt, \PDO::PARAM_STR );
// \DebugPrinter::debug($this->salt);
$this->pass .= $this->salt;
$hashPass = password_hash($this->pass, PASSWORD_BCRYPT);
// \DebugPrinter::debug($hashPass);
$st->bindValue( ":pass", $hashPass, \PDO::PARAM_STR );
$st->bindValue( ":role", $this->role, \PDO::PARAM_STR );
$st->bindValue( ":email", $this->email, \PDO::PARAM_STR );
$st->execute();
$this->id = $this->pdo->lastInsertId();
}
Интересует данный участок кода:
//Хеширование пароля
$this->salt = rand(0,1000000);
$st->bindValue( ":salt", $this->salt, \PDO::PARAM_STR );
// \DebugPrinter::debug($this->salt);
$this->pass .= $this->salt;
$hashPass = password_hash($this->pass, PASSWORD_BCRYPT);
// \DebugPrinter::debug($hashPass);
$st->bindValue( ":pass", $hashPass, \PDO::PARAM_STR );
Как я это понимаю:
1) Свойству salt присвается рандомное число от 0 до 1 000 000
2) Связывает параметр PDO :salt со значением $this->salt
3)
$this->pass .= $this->salt; $hashPass = password_hash($this->pass, PASSWORD_BCRYPT);
На этом этапе вопросы:
1) Зачем оператор ".=" ?
2) Каким образом связаны $this->pass и $this->salt?
- Log in to post comments
- 1913 reads