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
-~----------~----~----~----~------~----~------~--~---

Reply via email to