• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Validation and Controller Help

#1
[eluser]jzmwebdevelopement[/eluser]
I have a general create function that submits a new user to the database - this works fine. Where I am is stuck is the following.

- I know that I need the user that is signing up to have clicked the link in the email before the account can login. How do I implement that into my if statement when I run the create function?

- I am a bit confused as to how to set my errors if any thing is correct or wrong to do with the activation process I have currently set the messages using
Code:
$this->form_validation->set_message();
. Do I need to use set_flashdata();? and how will echo these into the view?

- Why am I not getting any validation results (errors)? -> I do get the errors when the form is not filled out or if something is required but not a callback

When I create a new user I have the userActive field set at 0 by default and also the default group is set to users

Controller:

Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class Users extends CI_Controller {
    
    
     public function index()
     {
      $data['companyName'] = $this->core_model->companyDetails()->coreCompanyName;
      $data['pageTitle'] = "Create User";
      $this->load->view('frontend/assets/header', $data);
      $this->load->view('frontend/users', $data);
      $this->load->view('frontend/assets/footer');
     }
    
     public function create(){
    
      //If form validation fails load previous page with errors else do the job and insert data into db
      
      if($this->form_validation->run('createUser') == FALSE)
      {
       $data['success'] = "";
      }else{
       $username = $this->input->post('userName');
       $password = $this->input->post('userPassword');
       $firstname = $this->input->post('userFirstName');
       $lastname = $this->input->post('userLastName');
       $email = $this->input->post('userEmail');
          
       $passwordHash = $this->encrypt->sha1($password); // Lets encrypt the password why sha1?  MD5 is for tossers
      
       $activateCode = $this->_activateCode(10);
      
       // If the data is correct follow through with db insert
      
       if($this->users_model->createUser($username,$passwordHash,$firstname,$lastname,$email,$activateCode))
       {
        $data['success'] = TRUE;
        
        redirect('frontend/users/create','refresh');
        
       }
      
      }
      $data['companyName'] = $this->core_model->companyDetails()->coreCompanyName;
      $data['pageTitle'] = "Create User";
      $this->load->view('frontend/assets/header', $data);
      $this->load->view('frontend/user_create', $data);
      $this->load->view('admin/assets/footer');
      
      echo get_class($this);
      var_dump(method_exists($this, '_activateCode'));
     }
    
     function _userRegEmail($activateCode,$email,$firstname,$lastname){
      $data['companyName'] = $this->core_model->companyDetails()->coreCompanyName;
      $data['companyEmail'] = $this->core_model->companyDetails()->coreCompanyEmail;
      $data['companyContact'] = $this->core_model->companyDetails()->coreContactName;
      $data['firstName'] = $firstName;
      $data['lastName'] = $lastname;
      $data['email'] = $email;
      $data['activateCode'] = $activateCode;
      
      $this->email->from($this->core_model->companyDetails()->coreCompanyEmail, $this->core_model->companyDetails()->coreCompanyName);
      $this->email->to($email);
      $this->email->subject($this->core_model->companyDetails()->coreCompanyName, 'User Registration Confirmation');
      
      $messageContent= $this->load->view('email_templates/userReg','', TRUE);
      
      $this->email->message($messageContent);
      
      //$this->email->send();
     }
    
     function usersconfirm(){
      
      $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');
       }
     }
    
      function _username_check($username)
     {
      if($this->users_model->username_taken($username))
      {
       $this->form_validation->set_message('username_check', 'Sorry the username %s is taken!');
       return FALSE;
      }else{
       return TRUE;
      }
     }
    
     function _email_check($email)
     {
      if($this->users_model->email_check($email))
      {
       $this->form_validation->set_message('email_check','Sorry there is already a user with this %s');
       return FALSE;
      }else{
       return TRUE;
      }
    
     }
    
       function _activateCode($length)
     {
      return random_string('alnum', $length);
     }
    
    }
    
    /* End of file users.php */
    /* Location: ./application/controllers/user[code]s.php */

Validation:

Code:
<?php
$config = array('createUser' => array(
array(
  'field' => 'userName',
  'label' => 'User Name',
  'rules' => 'trim|required|callback_username_check|xss_clean'
),
array(
  'field' => 'userPassword',
  'label' => 'User Password',
  'rules' => 'trim|required|xss_clean|sha1'
),
array(
  'field' => 'userFirstName',
  'label' => 'First Name',
  'rules' => 'trim|required|xss_clean'
),
array(
  'field' => 'userLastName',
  'label' => 'Last Name',
  'rules' => 'trim|required|xss_clean'
),
array(
  'field' => 'userEmail',
  'label' => 'User Email',
  'rules' => 'trim|required|callback_email_check|xss_clean'
  )
) // End of create user array
);


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2020 MyBB Group.