【发布时间】:2014-01-31 13:09:38
【问题描述】:
我对 PHP 有基本的了解,但我想学习如何使用类来制作我的程序 OOP,所以我尝试了一个简单的类,它会为密码生成哈希值,我正在使用 bcrypt用于散列。
到目前为止我写的代码是这样的:
PasswordHash.php
class PasswordHash {
public static function generate_bcrypt($user_password) {
return $this->password = password_hash($user_password, PASSWORD_DEFAULT);
}
}
PasswordHash.php 位于类文件夹中。
index.php
spl_autoload_register(function($class){
require_once 'classes/' . $class . '.php';
});
$password = 'mypassword';
echo $hashed = PasswordHash::generate_bcrypt($password);
当我检查它是否正常工作时,什么也没有发生。有人可以帮我弄这个吗?我的代码是否遗漏了什么?提前致谢。
【问题讨论】:
-
首先,当公共变量不存在时,您将返回 $this->password,并且由于您正在静态调用该函数,因此您不能使用 $this
-
您这样做只是添加了不必要的工作。尤其是当你可以调用 password_hash()
-
@LiamSorsby 他写这篇文章是为了学习如何使用类。
-
@arkascha 是的,我知道这没有什么问题。我只是说在这种特殊情况下,最简单的方法是直接调用函数
-
另见 Openwall 的 Portable PHP password hashing framework (PHPass)。它强化了对用户密码的一些常见攻击。
标签: php class hash password-protection bcrypt