$_GET is Mangling Base64 value
| From: | George Langley | Date: | Thu, 11 Mar 2010 21:57:02 +0000 |
| Subject: | $_GET is Mangling Base64 value | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-302717@lists.php.net to get a copy of this message | ||
Hi all. Is there an issue with $_GET not handling a Base64-encoded value correctly? (PHP is 5.1.6)
Am receiving a Base64-encoded value:
theurl.com/index.php?message=xxxxx
and retrieving it with $_GET:
echo $_GET["message"];
xxxxx is a Japanese phrase, that has been encoded into Base64. So is using the + symbol:
..OODq+OCou...
but my $_GET is replacing the + with a space:
..OODq OCou...
thus the base64_decode() is failing (displays diamonds with questions marks on my Mac).
The Base64-encoded string is 156 characters long, if that has any bearing. My test URL is 230
characters in total, less than the "old" 256 limit.
All I can find online is a reference that PHP will no longer assume that a space is a +:
<http://ca3.php.net/manual/en/function.base64-decode.php#69298>
but my problem is the opposite - the + symbols are there, but the GET is removing them.
(And to add a wrinkle, this then goes into a Joomla! page, whose getVar() command completely
removes the +, so I couldn't even do a string replace, as I don't know where the + should
have been!)
Tired of looking at the dark red spot on the wall! Thanks.
George Langley Multimedia Developer Audio/Video Editor Musician, Arranger, Composer
www.georgelangley.ca