On Thu, 2010-03-11 at 14:57 -0700, George Langley 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.
> 
> 
> George Langley    Multimedia Developer    Audio/Video Editor    Musician, 
> Arranger, Composer www.georgelangley.ca
> 
> 


Do a url_encode() on the string after you base64() it, and it should be
safe for use as a URL

Thanks,
Ash
http://www.ashleysheridan.co.uk


Reply via email to