2016-11-03 3 views
1

Я пытаюсь создать функцию на своем веб-сайте, которая вернет значение из файла cookie, если оно существует, или false, если это не так. Функция не возвращает значение false или значение cookie. То, что оно возвращает, равно пустой строке.Функция getCookie не возвращает правильные значения

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

Теперь, если я хотел бы создать печенье с именем testcookie, это будет выглядеть как 83Jdn3idsf93Jdnfh234ksadnu3234, когда он зашифрован. Файл cookie выполнен с зашифрованным именем и зашифрованным значением.

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

При использовании функции имя будет зашифровано для зашифрованного имени. Я проверил и убедился, что файл cookie существует. Так что не волнуйтесь и, пожалуйста, не комментируйте: «Существует ли файл cookie?»

Спасибо!

EDIT: Crypto - это моя собственная библиотека классов для шифрования и дешифрования. Я просто расшифровываю свои файлы cookie. Как я уже объяснил выше. (В основном это похоже на md5 с моим собственным алгоритмом)

EDIT: Что такое библиотека криптографии и что она делает?
Это просто способ легко шифровать вещи, как я его называю?

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

Какой вид, если вещь крипто? Что означает 'crypto :: encrypt ($ cookiename, 'info')' return, если вы просто его выведете? Как вы получаете имя файла cookie, когда вы его устанавливаете? – GolezTrol

+0

Причина, по которой я спрашиваю, заключается в том, что я подозреваю, что вы используете имя файла cookie в качестве ключа для шифрования слова «информация», а не наоборот. Или, может быть, вы неправильно шифруете имя файла cookie. Но я не могу быть уверен в этом без лишнего контекста. – GolezTrol

+0

Пожалуйста, взгляните на мое новое редактирование –

ответ

0

Его не ясно, что вы пытаетесь сделать, потому что вы, кажется, использует нестандартную библиотеку (crypto) и не дают нам ссылку, что это такое.

Предполагая, что вы используете так называемый «defuse/php-encryption» библиотеку, то проблема, скорее всего, что вы обеспечиваете строку ("info") в качестве ключа к Crypto::encrypt(), и что не правильно - Crypto::encrypt() принимает ключ в виде от Defuse\Crypto\Key, и ваш компилятор должен был предупредить вас об этом.

Если вы хотите зашифровать с использованием кодовой фразы (которая неверно вызывает «пароль»), вы должны позвонить по номеру Crypto::encryptWithPassword().

Кроме того, обратите внимание, что шифрование - это интенсивная работа с интенсивным процессором, и не рекомендуется выполнять его без необходимости. В коде вы вызываете encrypt() дважды с тем же самым аргументом. Его лучшая идея назвать его один раз, сохранить результат в переменной, а затем использовать переменную во всех других местах.

+0

строка '' info ''- это всего лишь метод шифрования, который я хочу использовать –

Смежные вопросы