我有一个非常简单的功能:
$me = 45S237s53dsSerwjw53s23rjf; //Some long encrypted string.
function decrypt($user){
$user = pack("H*" , $user); //Converting from hexadecimal to binary
$user = mcrypt_ecb(MCRYPT_DES, $key, $user, MCRYPT_DECRYPT); //Decrypting
return $user;
}
问题是,如果我去echo decrypt($me);
它不起作用,我不会以解密的字符串结束。
但是,如果我在不使用function
的情况下做同样的事情就可以了:
$user = $me;
$user = pack("H*" , $user);
$user = mcrypt_ecb(MCRYPT_DES, $key, $user, MCRYPT_DECRYPT);
echo $user; //Works fine...
这里发生了什么?
答案 0 :(得分:1)
您错过了函数体内的$key
变量。使用正确的错误级别设置,您会收到警告,$key
未定义。
将$key
添加为函数参数或在函数体内定义$key
(或者,从全局范围中导入$key
,第三种方法)。
function decrypt($user, $key){
//...
}
function decrypt($user){
$key = '....whatever...';
//...
}
function decrypt($user){
global $key;
//...
}
function decrypt($user){
//...
$user = mcrypt_ecb(MCRYPT_DES, $GLOBALS['key'], $user, MCRYPT_DECRYPT);
//...
}