2012-07-17 50 views
0

我正在为我的用户注册添加一个电子邮件验证步骤。我似乎无法访问电子邮件链接中传递的参数;

链路:[email protected] &键= 5614c46be05a95f55f2231d8dea41418d17b197a

这里是页的代码;在检查

class page_activation extends Page { 
    function init(){ 
     parent::init(); 

    if($this->api->auth->isLoggedIn())$this->api->redirect('index'); 

    $loginAccount = $_GET['email']; 
    $activationKey = $_GET['key']; 

    $this->add('H1')->set('Activated'); 
    $this->add('H3')->set('Account: '.$loginAccount); 
    $this->add('H3')->set('Key: '.$_GET['key']); 
} 
+0

你尝试调试它?是的,看到有一些花括号失踪... Probalby错误的原因。检查你的'if'语句! – 2012-07-17 02:39:43

+0

格式使得它看起来像{}缺少if语句。它输出“激活,帐户和密钥”,但没有传递参数的内容。我已更新原始帖子。 – Micheal 2012-07-17 03:52:49

+0

看来我无法回答我的问题。但答案不适合。你可以告诉我这是新的... – Micheal 2012-07-17 06:03:18

回答

0
var_dump($_GET); 
  • 检查网络选项卡,以确保获得PARAMS实际上通过。
  • 检查国防部重写规则
0

我已经找到了解决办法的情况下,它可能会帮助别人。看起来您可以访问$ _SERVER变量,但$ _GET变量在您访问页面时会丢失。以下是我用来从电子邮件链接访问传递的变量的一些代码;

class page_activation extends Page { 
function init(){ 
    parent::init(); 

    if($this->api->auth->isLoggedIn())$this->api->redirect('index'); 

    $data = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY); 
    $queryParts = split('[;&]', $data); 

    $params = array(); 
    foreach ($queryParts as $param) { 
     $item = explode('=', $param); 
     $params[$item[0]] = $item[1]; 
    } 

    $loginAccount = $params['email']; 
    $activationKey = $params['key']; 

    $this->add('H1')->set('Activated'); 
    $this->add('H3')->set('Account: '.$loginAccount); 
    $this->add('H3')->set('Key: '.$activationKey); 


} 

}