Php 在函数内部使用define
我试图在函数中定义一个常量,但是我一直得到一个语法错误。如果我在函数和类之外的文件顶部定义它,它将工作Php 在函数内部使用define,php,Php,我试图在函数中定义一个常量,但是我一直得到一个语法错误。如果我在函数和类之外的文件顶部定义它,它将工作define('SALT_LENGTH',9)一旦我把它放入类或函数中,我就得到语法错误,我也尝试了const SALT\u LENGTH=9但这是同一个问题。我一直在四处寻找答案,但什么也没找到 class userFunctions{ //Generate an encrypted password method public function generateHash($pass
define('SALT_LENGTH',9)代码>一旦我把它放入类或函数中,我就得到语法错误,我也尝试了const SALT\u LENGTH=9代码>但这是同一个问题。我一直在四处寻找答案,但什么也没找到
class userFunctions{
//Generate an encrypted password method
public function generateHash($password, $salt = null)
{
if ($salt === null) {
$salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
} else {
$salt = substr($salt, 0, SALT_LENGTH);
}
return $salt . sha1($salt . $password);
}
//End of generate encrypted password method
}
你必须使用“self”关键字
像这样,
类用户函数{
const SALT_LENGTH = 5; // define constant
public function generateHash($password, $salt = null)
{
if ($salt === null) {
$salt = substr(md5(uniqid(rand(), true)), 0, self::SALT_LENGTH);
} else {
$salt = substr($salt, 0, self::SALT_LENGTH);
}
return $salt . sha1($salt . $password);
}
}请在您的类中使用构造函数。更改您喜欢的盐长度值。我选择了50。下面是代码
function __construct() {
define('SALT_LENGTH','500');
}
define是一个函数,当您不在函数范围内时,不能直接调用它。