Я создаю токен, который передаю как часть URL-адреса на странице. Я кодирую строку с помощью rawurlencode () и отправляю ее как токен, однако я обнаружил, что когда я декодирую полученный токен (переданный как параметр URL), я получаю немного другую строку.
Мой URL-адрес выглядит так: /path/to/file.html?token=abcd123
Вот фрагмент кода, который я использую. Я делаю что-то явно неправильное? В противном случае есть ли лучший способ создать (зашифрованные) токены и передать их в URL-адресе?
<?php
//send
$raw = "some secret string";
$token = rawurlencode($raw);
//recieve
$data = rawurldecode($token);
?>
[Изменить]
Я удалил функцию шифрования enc (dec) - они не были причиной проблемы - и были отвлекающим маневром. Я сузил проблему до того, что rawurlencode / decode не является симметричным в том, как они работают.
Строка в кодировке rawurlencoded при декодировании дает другую строку (аналогичную строку, но с отсутствующими частями). Конечно, не может быть ошибки в чем-то столь же фундаментальном для URL-адресов - так что я, должно быть, делаю что-то не так. Проблема в том, что я не могу его обнаружить, и пока, кажется, никто другой не может его обнаружить ...
[Дополнительная информация]
Я использую веб-фреймворк Symfony (v1.3.8), который, вероятно, возится с запросами, кодируя и декодируя вещи за кулисами. Я попытаюсь получить параметр токена непосредственно из переменной $ _POST и посмотреть, не является ли Symfony виновником всего этого.