从事我的第一个需要安全身份验证的项目。我的主机仍在 PHP 5.3.27 上,所以我正在使用此处找到的 password_hash() 兼容性补丁。我的问题是return password_hash($password, PASSWORD_BCRYPT, array('cost'=>$cost));
错误指出 $password 必须是字符串。为什么不是字符串?我什至不知道从哪里开始调试。
获取密码的 HTML
<form method='post' action='register.php' name='loginform'>
<label for="inputpass">Password</label>
<input type="password" class="form-control" id="inputpass" placeholder="Enter a password">
</form>
register.php 的内容
<?php
require 'validate.php';
$password = $_POST['password'];
var_dump(validations::generate_hash($password));
?>
validate.php 的内容 *password.php 是 password_hash()* 的 5.3 兼容性补丁
<?php
require 'plugins/password.php';
class validations {
function generate_hash($password){
$cost = 11;
return password_hash($password, PASSWORD_BCRYPT, array('cost'=>$cost));
}
function validate_pw($password, $hash){
return crypt($password, $hash)==$hash;
}
}
?>