Hi Grigri , thanks a lot for explaining the issue, makes it totally obvious. Actually after writing my post I saw another thread tackling also a parameter issue. They used the usual GET ?key=value mechanism and because this is basically a user id for a initial request, I though it may be a good idea to let Google know that it isn't worth searching the URL. So I tried the usual GET parameters and I had my plus sign back :)
But thanks anyway for giving me something to read and some more insight. It's probably useful for anytime later. Cheers, Oliver On Nov 21, 10:39 am, grigri <[EMAIL PROTECTED]> wrote: > This has very little to do with cake. > > A URI has reserved characters which must be escaped (see RFC 3305). > The data (query part of the URI) of a GET request is interpreted as > the mime type `application/x-www-form-urlencoded` which has some > legacy encoding rules, including the substition of + for a space. > > Seehttp://en.wikipedia.org/wiki/Percent-encodingfor more details. > > While you might argue that your data is technically in the path part > of the uri, not in the query part, cakephp's .htaccess file encodes > all path data to a query value called 'url', so it is then subject to > those nasty legacy rules. This behavior is not specific to cakephp; > it's very widespread. > > I'm not sure what you can do about your specific problem. I've never > ran into it; the closest I got was when I wanted to process '+' and > '-' characters to sort data (eg: '/sort:+title-price+whatever', and I > achieved that by treating a space as a plus character. > > Sounds like a thorny issue though; how do you tell if the space was > meant to be a space or a plus? Can you check any of the following > server variables and get the correct result? > > $_SERVER['REDIRECT_QUERY_STRING']; > $_SERVER['REDIRECT_URL']; > $_SERVER['REQUEST_URI']; > > For me (Apache 2.2, PHP 5.2.6), using the following url, I get these > results > > URL (typed) "http://localhost/website/controller/test:one+two-three/ > this:has a space" > > [REDIRECT_QUERY_STRING] => url=controller/test:one+two-three/this:has > a space > [REDIRECT_URL] => /website/app/webroot/controller/test:one+two-three/ > this:has a space > [QUERY_STRING] => url=controller/test:one+two-three/this:has a space > [REQUEST_URI] => /website/controller/test:one+two-three/this:has%20a > %20space > > So it must be possible to get the correct parameters, if this works > the same way on all servers. > > hth > grigri > > On Nov 21, 6:16 am, Oliver <[EMAIL PROTECTED]> wrote: > > > Hi, > > > I've a problem where I pass parameter using GET to an action that > > contains a plus ("+") sign. It will always get replaced by a space > > character before becoming accessible in the action. Everything I've > > tried failed, either using the different types to pass the parameter > > (names, etc). I haven't tried a POST yet but wanted to ask here if > > this is a known and wanted behavior or if I may have run into a bug. > > > Here an example of a url I try to call: > > > blah.com/profiles/import/Y%2bI6hLyjY7ryHiwIHenWYg%3d%3d > > > Here the result when printing the params array: > > > Array ( [url] => profiles/import/Y I6hLyjY7ryHiwIHenWYg== ) > > > It doesn't help if I provide the parameter in decoded form, same > > result. > > > I'm using 1.2 RC3. > > > Any help highly appreciated! > > > Thanks, > > Oliver --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
