2012-03-05 37 views
1

更新時間:笨:顯示動態誤差

RJZ:

TdjxQetc是來自於數據庫,所以當我運行/確認/我應該得到對不起,你沒擁有的$activateCode正確的激活碼,因爲我沒有通過任何變種($activateCode),但是當我運行/確認/ $activateCode我應該得到感謝您的帳戶現在活動,您可以登錄!並與else語句

我想它應該被改變,一個新的模型功能的開發,以檢查是否userActive已被設置爲1,然後顯示另一個$message,這樣的鏈接才能使用。


查看:

<div class = "messages"> 
    <?php if($confirmMessage != ''): ?> 
     <?php if($confirmError): ?> 
      <p class="error"> 
       <?php echo $confirmMessage; ?> 
       </p> 
       <?php else: ?> 
        <p class="message"> 
         <?php $confirmMessage?> 
         </p> 
         <?php endif; ?> 
         <?php endif; ?> 
    </div> 

控制器:

function confirm(){ 

     $activateCode = $this->uri->segment(3); 
     $error = FALSE; 
     $message = ''; 

     if($activateCode == '') 
     { 
      $error = TRUE; 
      $message = 'Sorry you did not have a correct Activation Code.'; 
     } 
      $userConfirmed = $this->users_model->confirm_user($activateCode); 

      if($userConfirmed){ 
       $message = 'Thanks your account is now active you may login!'; 
      }else{ 
       $error = TRUE; 
       $message = 'I am sorry we do not have any details with that Activation Code'; 
      } 
      $data['companyName'] = $this->core_model->companyDetails()->coreCompanyName; 
      $data['pageTitle'] = "User Confirm"; 
      $data['confirmError'] = $error; 
      $data['confirmMessage'] = $message; 
      $this->load->view('frontend/assets/header', $data); 
      $this->load->view('frontend/user_confirm', $data); 
      $this->load->view('frontend/assets/footer'); 
    } 

我不確定爲什麼我沒有收到確認郵件,我只是得到我的觀點。該數據庫更新爲1

查看:

<h1><?php echo $companyName; echo nbs(1);?> - <?php echo $pageTitle; ?></h1> 

    <p>Error: <?php echo validation_errors();?></p> 

控制器:

function confirm(){ 

     $activateCode = $this->uri->segment(3); 

     if($activateCode == '') 
     { 
      $this->form_validation->set_message('userConfirmError', 'Sorry you did not have a correct Activation Code.'); 
     } 
      $userConfirmed = $this->users_model->confirm_user($activateCode); 

      if($userConfirmed){ 
       $this->form_validation->set_message('userConfirmed', 'Thanks your account is now active you may login!'); 
      }else{ 
       $this->form_validation->set_message('userRecord', 'I am sorry we do not have any details with that Activation Code'); 
      } 
      $data['companyName'] = $this->core_model->companyDetails()->coreCompanyName; 
      $data['pageTitle'] = "User Confirm"; 
      $this->load->view('frontend/assets/header', $data); 
      $this->load->view('frontend/user_confirm', $data); 
      $this->load->view('frontend/assets/footer'); 
    } 

確認功能:

function confirm_user($activateCode) 
    { 
    //Selects the userID where the given URI activateCode = ? 

     $this->db->select('userID'); 
     $this->db->from('users'); 
     $this->db->where('userActiveCode', $activateCode); 

     $result = $this->db->get(); 

     if($result->num_rows == 1) // If the above result is = 1 then update the userActive row else it will fail 
     { 
      $this->db->set('userActive', 1); 
      $this->db->where('userActiveCode', $activateCode); 

      return TRUE; 
     }else{ 
      return FALSE; 
     } 

核心型號:

function companyDetails() 
    { 
     static $details; 

     if(!$details) 
     { 
      $this->db->select('coreCompanyName, coreContactName, coreContactEmail'); 
      $details = $this->db->get('core')->first_row(); 
     } 
     return $details; 
    } 
+0

可以肯定地說,你在查看時回顯了表單錯誤..? – 2012-03-05 05:11:19

+0

@Sudhir我已經包含了我的觀點。 – 2012-03-06 00:00:34

回答

1

你是種在這裏的一個山痣山這裏傑斯。讓我們看看我們能做些什麼來打掃一下:

控制器方法

function confirm() 
{ 
    $activate_code = $this->uri->segment(3); 

    if(!$this->users_model->confirm_user($activate_code)) 
     $error = true; 
    else 
     $error = false; 

    $data['companyName'] = $this->core_model->companyDetails()->coreCompanyName; 
    $data['pageTitle'] = "User Confirm"; 
    $data['confirmError'] = $error; 
    $this->load->view('frontend/assets/header', $data); 
    $this->load->view('frontend/user_confirm', $data); 
    $this->load->view('frontend/assets/footer'); 
} 

查看

<div class = "messages"> 
    <?php if($confirmError): ?> 
     <p class="error"> 
      Your activation code is invalid. 
     </p> 
    <?php else: ?> 
     <p class="message"> 
      Your account has been activated. 
     </p> 
    <?php endif; ?> 
</div> 

請將此代碼添加到您的usermodel頂部:: confirm_user方法:

if($activateCode == '') 
    return false; 

我將控制器方法簡化爲只有兩種情況 - 成功或錯誤。沒有必要檢查activate_code,因爲你的模型正在爲你做。

此外,我更願意保留僅在視圖中使用的視圖中的字符串 - 在視圖中。

+0

謝謝你,我已經嘗試過,但是當我嘗試/用戶/確認/我得到你的帳戶已被激活。有沒有什麼方法可以設置,抱歉,您還沒有輸入代碼? – 2012-03-06 05:16:06

+0

如果您使用上面的代碼收到該消息,則您的UserModel :: confirm_user方法對空白的激活代碼返回true。 – slypete 2012-03-06 05:33:40

+0

謝謝傑西,所以我想這種方法幫助或解決了你的問題? – slypete 2012-03-06 06:07:30

0

如果您還沒有準備好,你就需要調用validation_errors()助手(或笨的其他助手的錯誤產生的一個)在你的視圖文件。

// in view file 
<form> 
    <?php echo validation_errors(); ?> 
    <!-- rest of form... --> 
</form> 

如果你調用validation_errors(),仍然沒有看到輸出,這可能是因爲驗證未運行。在此之前調用視圖,你需要運行表單驗證:

// in controller action function 
$this->form_validation->run(); 

隨着您在上面提供的代碼,仍然不會很後事 - 你還沒有真正建立了驗證任何規則。你會想在validation guide讀了,但一般的方法是這樣的:

// in controller action function 
$this->form_validation->add_rules('my_field', 'My Field Name', 'required'); 
$this->form_validation->run(); 

你可能想知道add_rules實際測試。在Codeigniter中,它通常設計用於處理來自表單的任何表單數據$_POST。要使用它直接在模型(因爲它看起來就像你正在試圖做的)會採取一些黑客,它可能是最簡單的只使用一個標誌變量和消息字符串:

function confirm($activateCode = '') { 

    $error = false; 
    $message = ''; 

    if($activateCode == '') 
    { 
    $error = true; 
    $message = 'Sorry you did not have a correct Activation Code.'; 
    } 

    $userConfirmed = $this->users_model->confirm_user($activateCode); 

    if($userConfirmed) 
    { 
    $message = 'Thanks your account is now active you may login!'; 
    } 
    else 
    { 
    $error = true; 
    $message = 'I am sorry we do not have any details with that Activation Code'; 
    } 

    $data['error'] = $error; 
    $data['message'] = $message 
} 

鑑於:

<?php if ($message != ''): ?> 
<?php if ($error): ?> 
    ERROR: <?php echo $message; ?> 
<?php else: ?> 
    SUCCESS: <?php echo $message; ?> 
<?php endif; ?> 
<?php endif; ?> 
+0

嘿,我已經包括了我的觀點:) – 2012-03-06 00:00:48

+0

並更新了匹配的答案! 'form_validation'庫旨在解決與您嘗試在此處使用它不同的問題 - 我希望我在此處提出的替代方案能夠滿足您的需求。 – rjz 2012-03-06 00:24:31

+0

謝謝夥伴,我已經更新了我的問題,因爲我還沒有得到迴應:) – 2012-03-06 01:50:32