Вопросы по работе 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
- 1402 reads