On Thu, Mar 11, 2010 at 23:16, Daniel Egeberg <degeberg@xxxxxxx> wrote: > On Thu, Mar 11, 2010 at 22:57, George Langley <george.langley@xxxxxxx> wrote: >> 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. > > PHP does a urldecode() on GET parameters, which regards + as a space. > You should be able to get the information you need using > $_SERVER['QUERY_STRING']. > And this is now made a bit clearer in the manual: http://svn.php.net/viewvc?view=revision&revision=296092 Should propagate to the mirrors some time tomorrow. -- Daniel Egeberg -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php