Re: $_GET is Mangling Base64 value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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'].

-- 
Daniel Egeberg

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux