So I know this post happened nearly 3 years ago, but this really stumped me 
for a good while.  The final solution I came up with was to triple encode 
the email address before passing it to the URL like so:

$enc_email = urlencode(urlencode(urlencode('[email protected]')));

This in turn would get put into the URL:

http://example.com/email/confim/foo%25252Bbar%252540example.com/

After all of the URL processing magic, the email finally gets put into 
CakePHP correctly.

Now why CakePHP requires this be done is somewhat a mystery to me, but the 
best thing I can come up with is that it's not all CakePHP's fault.  The 
best thing I can come up with is that this maybe http server or apache 
configuration specific.  It could even be different from distro of linux to 
distro of linux.  It seems that some installs of apache require you to 
double encode the '+', '\', or '/' variables in order to process them 
correctly.  This was probably designed to prevent some sort of security 
breach.  Please see the following link for more info:  
http://www.jampmark.com/web-scripting/5-solutions-to-url-encoded-slashes-problem-in-apache.html

The final encoding is probably required for CakePHP.  Although I can't find 
it in the code, I am sure CakePHP decodes all URL variables again somewhere.

Hopefully this will help prevent any frustration for someone in the future.

-Matt Brooks


On Monday, January 26, 2009 10:19:01 PM UTC-6, Jon Molesa wrote:
>
> I'm trying to pass a valid email address as a parameter in the url.
>
> [email protected]
>
> in my model it strips the + sign.
>
> function confirm($email){
>         $this->set('email',$email);
> }
>
> confirm.ctp
>
> <?php echo $email ?>
>
> outputs
>
> foo [email protected]
>
> I believe this is happening prior to the controller function getting
> ahold of the string as I've tried various encoding functions including
> Security::cipher() at the beginning of the function upon decoding I
> still get the above output.  Can anyone suggest how I might be able to
> retain the + sign in my controller logic and back out to the view?
>
> -- 
> Jon Molesa
> [email protected]
> if you're bored or curious
> http://rjmolesa.com
>
>

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to