PHP: хранение данных base_64 в файлах cookie - PullRequest
0 голосов
/ 24 февраля 2011

Мне нужно сохранить некоторые данные в куки.Данные проходят шифрование mcrypt, а затем base64 для предотвращения использования каких-либо странных символов.
Сохранение зашифрованной и закодированной строки в сеансе и ее считывание и дешифрование / декодирование работает отлично.Не удается выполнить то же самое с файлом cookie - возвращается абсолютно бессмысленный текст.

Очевидно, это связано с тем, что вызов функции mcrypt-decrypt получает неверные данные, что заставляет меня полагать, что на содержимое моего файла cookie влияюттак или иначе.

Что, черт возьми, PHP делает за кулисами с моими данными cookie?

Код:
(Обратите внимание, чтоmcrypt-функции представлены ниже как простой вызов функции для удобства чтения)

$string = base64_encode( mcrypt_encrypt( 'A string' ) );
setcookie('string', $string, time()+3600);
$_SESSION['string'] = $string;

$sessiondata = base64_decode( mcrypt_decrypt($_SESSION['string']); // A string!
$cookiedata = base64_decode( mcrypt_decrypt($_COOKIE['string']) ); // Completely gibberish

1 Ответ

0 голосов
/ 24 февраля 2011

Попробуйте вызвать urlencode () для вашей строки перед отправкой в ​​cookie - я, кажется, вспоминаю, что PHP автоматически выполняет urldecode () для данных, когда они становятся доступными в $ _COOKIE.

...