PHP - Знак "плюс" с ПОЛУЧАЕТ запрос

У меня есть Сценарий PHP, который делает основное шифрование строки через метод ниже:


Пример URL для шифрования строки был бы похож на это:

Encrypt.php? method=encrypt&str=the быстрая лиса

Который возвратил бы это как зашифрованную строку:

LCuT/ieVa6cl3/4VtzE+jd9QPT3kvHYYJFqG6tY3P0Q =

Теперь для дешифрования строки все, что необходимо сделать, изменить запрос "метода" для "дешифрования", как так:

Encrypt.php? method=decrypt&str=LCuT/ieVa6cl3/4VtzE+jd9QPT3kvHYYJFqG6tY3P0Q =

Единственная проблема состоит в том, что, когда та зашифрованная строка дешифрована, она возвращает это:

Кƒ §rYV} ̳5Äš\· nßì (ñïX8Þ; b

Я сузил проблему к знаку "плюс", который находится в зашифрованной строке. PHP's ДОБИРАЕТСЯ, метод, кажется, переводит знак "плюс" в пробел. Я искал эту ошибку и узнал, что она была уже зарегистрирована здесь. Я попробовал различные методы, перечисленные на той странице и других без успеха. Самое близкое, которое я получил, при помощи этого:

$fixedstring = str_replace(" ", "+", $string);

и затем с помощью $fixedstring в методах шифрования, проблема после дешифрования, все пробелы преобразовываются в знаки "плюс". Какие-либо идеи?

Я знаю использование, POST имел бы больше смысла, но я использую, ДОБИРАЮТСЯ по определенным причинам. Я сэкономлю детали.

34
задан user 20 April 2010 в 00:57
поделиться

2 ответа

Если вы прочтете весь отчет об ошибке, вы увидите ссылку на RFC 2396 . Это означает, что + зарезервирован . PHP правильно переводит незакодированный знак + в пробел.

Вы можете использовать urlencode () зашифрованный текст при его возврате пользователю. Таким образом, когда пользователь отправляет зашифрованный текст для расшифровки, вы можете использовать urldecode () его. PHP сделает это автоматически, если он также поступит через строку GET.

Итог: + должен быть отправлен в PHP как закодированное значение:% 2B

42
ответ дан 27 November 2019 в 16:52
поделиться

Вы должны использовать urlencode () перед помещением зашифрованной строки в строку запроса, которая будет «экранировать» любые специальные символы ( включая + ), а затем вызовите urldecode () перед его расшифровкой, чтобы вернуть их к исходной форме.

4
ответ дан 27 November 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: