On Thu, Mar 11, 2010 at 23:16, Daniel Egeberg <degeb...@php.net> wrote:
> On Thu, Mar 11, 2010 at 22:57, George Langley <george.lang...@shaw.ca> 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

Reply via email to