在我的函数文件中,我有以下代码:
function password($password, $dbpassword = false){
if($dbpassword){
$password = mysqli_real_escape_string($GLOBALS["mysqli"], $_POST["$dbpassword"]);
if(empty($password))
$password = mysqli_real_escape_string($GLOBALS["mysqli"], $_GET["$dbpassword"]);
if(empty($password))
return false;
}
$hasher = new PasswordHash(8, false);
if (strlen($password) > 72)
return false;
else{
if($dbpassword){
$check = $hasher->CheckPassword($password, $dbpassword);
if ($check)
return true;
else
return false;
}else{
$hash = $hasher->HashPassword($password);
if (strlen($hash) >= 20)
return $hash;
else
return false;
}
}
}在另一个文件中(包含到函数和PHPASS php文件),我有这样的代码:
$pass = password("Vlad");
if(password("Vlad", $pass)){
echo 11;
}else{
echo 22;
}它返回22。为什么会这样呢?
发布于 2013-12-28 02:50:44
当您使用第二个非NULL变量调用password函数时,它将返回false,除非您在调用页面时设置了POST或GET变量。
该POST或GET变量的名称必须是您第一次使用函数时散列的密码的密码散列:
$_POST["$dbpassword"]或
$_GET["$dbpassword"]我怀疑表单中表单域的名称是不断变化的,所以这就解释了为什么函数在您第二次调用它时总是返回false。
https://stackoverflow.com/questions/20805967
复制相似问题