Re: $_GET is Mangling Base64 value

From: Date: Thu, 11 Mar 2010 22:16:57 +0000
Subject: Re: $_GET is Mangling Base64 value
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-302724@lists.php.net to get a copy of this message
On Thu, Mar 11, 2010 at 22:57, George Langley <george.langley@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']. -- Daniel Egeberg

« previous php.general (#302724) next »