通过电子邮件重定向"?"奇怪的代码

时间:2014-07-13 01:12:04

标签: php cakephp

我正在建立一个重置密码的系统,我需要在URL上传递电子邮件,如下所示:

http://example.com/reset?email=email@domain.com&token=89s8ads9

我这样做:

    return $this->redirect(array(
        'controller'=> 'site',
        'action'=> 'resetaSenha',
        '?'=> array('email'=> 'email=email@domain.com', 'token'=> 89s8ads9)
        )
    );

但是回来了:

http://example.com/reset?email=email%40domain.com&token=89s8ads9

3 个答案:

答案 0 :(得分:0)

%40是@ urlencoded。

代码中的某些内容正在将@转换为%40。 http://php.net/manual/en/function.urlencode.php

您可以使用urlencode($_GET['email']);对其进行解码,这将用@

替换%40

答案 1 :(得分:0)

我没有意识到,即使在网址上有?email = email%40domain,当我们从控制器访问$ this-> request-> query ['email']时,我们会获得以正确方式解码的电子邮件email@domain.com。

答案 2 :(得分:-2)

执行验证码检查,并在取消会话var后拒绝访问电子邮件发件人。