【问题标题】:Codeigniter email verification pass parametersCodeigniter 电子邮件验证通过参数
【发布时间】:2013-01-08 14:55:37
【问题描述】:

我正在尝试在注册帐户后实施电子邮件验证。所以注册账号后,会发邮件到用户邮箱进行验证。电子邮件是使用 codeigniter 的电子邮件类发送的。

发送邮件的代码如下

$config['wordwrap'] = TRUE;
$this->email->initialize($config);
$this->email->from('admin@mathplication.com', 'admin');
$this->email->to($user_email); 

$this->email->subject('Registration verification for mathplication');
$this->email->message('
        Thanks for signing up!
            Your account has been created, you can login with the following credentials 
            after you have activated your account by pressing the url below.
            Please click this link to activate your account:
<a href='.base_url('verify').'?email='.$user_email.'&rand='.$user_rand.'>Click Here</a>'); 

$this->email->send();

在 config 文件夹中的 routes.php 中

$route['verify']    = "login_register/view_verify

其中 view_verify 是我的 login_register 控制器中的函数

在这个 view_verify 中,我将检查我传递的两个参数,即电子邮件和生成的随机字符串。

function view_verify($email,$rand)
{
    //$email = $this->input->get('email');
    //$rand = $this->input->get('rand');
    $this->load->database();
    $this->load->model('login_model');
    $result= $this->login_model->email_verification($email,$rand);
    if($result==TRUE)
    {
        $this->load->view('pages/verify');
    }
}

我将收到 404 页面未找到错误。不确定我的变量路由是否是这里的问题,或者是否有另一种通过 url 将参数传递给控制器​​的方法。提前感谢您的帮助。

【问题讨论】:

标签: php codeigniter


【解决方案1】:

如果您要在 url 中使用查询字符串,则需要在配置中启用它。由于电子邮件地址,permitted_uri_chars 也可能存在问题。

您可以使用用户 ID 和 nonce 生成 url,例如:

<a href='.base_url('verify').$user_id.'/'.$user_rand.'>Click Here</a>'); 

应该产生类似

的东西
http://www.example.com/verify/1234/23q23rq2rq24rq34rq34rq34r

然后在路线中:

$route['verify/(:any)']    = "login_register/view_verify/$1";

此时,view_verify 函数应该可以正常工作,只是您需要调整模型以通过用户 ID 而不是电子邮件进行查找。

【讨论】:

  • 谢谢!有用!我使用 user_id 作为你的建议
【解决方案2】:
function verify($verificationText=NULL){    

$noRecords = $this->HomeModel->verifyEmailAddress($verificationText);   

if ($noRecords > 0){ 
    $error = array( 'success' => "Email Verified Successfully!");   
}else{ 
    $error = array( 'error' => "Sorry Unable to Verify Your Email!");   
} 
    $data['errormsg'] = $error; 
    $this->load->view('index.php', $data);  
}

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 2020-08-08
    • 2012-11-03
    • 2018-08-15
    • 2023-03-26
    • 2022-10-20
    • 1970-01-01
    • 2011-03-21
    • 2012-08-23
    相关资源
    最近更新 更多