Re: [PHP] $_GET is Mangling Base64 value

[email protected] (Adam Richardson)
Newsgroups php.general
Message-ID <[email protected]>
On Thu, Mar 11, 2010 at 4:57 PM, George Langley <[email protected]>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
>
>
>
Get variables are automatically urldecoded:
http://php.net/manual/en/function.urldecode.php

The '+' character is one of the special characters automatically decoded
(normally signifies a space.)  I would try using an encoding scheme that
doen't have collisions with special URL characters, use a different global
array not automatically decoded (POST, SESSION), or cautiously urlencode the
url's '+' chars (string replace all spaces to +) and then perform the base
64 decoding.

-- 
Nephtali:  PHP web framework that functions beautifully
http://nephtaliproject.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.