getCookie函数不返回正确的值

时间:2016-11-03 07:35:22

标签: php

我正在尝试为我的网站创建一个函数,如果它存在,它将从cookie返回一个值,否则返回false。该函数不返回false或cookie值。它返回的内容等于空字符串。

function getCookie($cookiename){
    if(!isset($_COOKIE[ crypto::encrypt($cookiename, 'info') ])){ return false; }
    return $_COOKIE[ crypto::encrypt($cookiename, 'info') ];
}

现在,如果我要创建名为testcookie的Cookie,则在加密时它将显示为83Jdn3idsf93Jdnfh234ksadnu3234。 Cookie由加密名称和加密值组成。

// Now if I would call the function like this:
if(getCookie("testcookie") !== false){
    echo getCookie("testcookie");
}

使用该功能时,名称将加密为加密名称。我检查过并确保cookie存在。所以不要担心,请不要评论“cookie是否存在?”

谢谢!

编辑:加密是我自己的加密和解密类库。我只是解密我的饼干..正如我上面解释的那样。 (基本上就像md5一样,我自己的算法)

编辑:什么是加密库,它有什么作用?
这只是一种轻松加密的方法,我该怎么称呼它?

crypto::encrypt(string $string, string $method){
    return $encrypted;
}
echo crypto::encrypt("EncryptMe", "info");
// Will output: Tt9ztswTYo2mlQi0rOI1C2F1UFRfiJTfsOLcNvNfhJteRTg75Vlk+j19AYuPqLxT

1 个答案:

答案 0 :(得分:0)

您不清楚自己要做什么,因为您似乎使用的是非标准库(crypto)并且没有给我们参考它是什么。

假设您正在使用所谓的" defuse/php-encryption"库,那么问题很可能是你提供了一个字符串("info")作为Crypto::encrypt()的关键,这是不对的 - Crypto::encrypt()以{{{{}}的形式获取一个键1}},你的编译器应该警告过你。

如果您想使用密码加密(即清除呼叫"密码"错误),则应拨打Defuse\Crypto\Key

另外,请注意加密是一项高度CPU密集型操作,并且不必要地执行加密也不是一个好主意。在您的代码中,您使用完全相同的参数调用Crypto::encryptWithPassword()两次。最好先调用一次,将结果存储在一个变量中,然后在所有其他地方使用该变量。