通过表单发送数据的正确方法是什么(codeigniter)

What's the correct way to send data via form (codeigniter)

register.php - 控制器

<?php
class Register extends CI_Controller {

    public function index()
    {
                $this->load->helper('url');
      $this->load->library('form_validation');
                $this->load->view('header');
                $this->load->view('user/register');
                $this->load->view('home');
                $this->load->view('footer');

      $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
      $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
        array('required' => 'You must provide a %s.')
      );
      $this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
      $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

      if ($this->form_validation->run() == FALSE) {
        $this->load->view('user/register');
      }
      else {
        header( 'Location: dashboard/lfg' ) ;
      }
    }
}

?>

register.php - 查看

<div id="registration" class="modalDialog">
  <div>
    <a href="#close" title="Close" class="close">X</a>
    <h2>Create Account</h2>
    <?php echo validation_errors(); ?>
    <?php echo form_open('Register'); ?>
    <label>Username</label>
    <input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" required />
    <label>Email</label>
    <input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" required />
    <label>Password</label>
    <input type="password" name="password" value="<?php echo set_value('password'); ?>" size="50" required />
    <label>Confirm Password</label>
    <input type="password" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" required />
    <div>
      <input type="submit" value="Create Account" /></div>
  </form>
  <a class="modal-link" href="#login">
    <p>Already have an account?</p>
  </a>
</div>

registration.php - 型号

<?php
class Registration extends CI_Model{
    function __construct() {
        parent::__construct();
    }
    function form_insert($data){
    // Insert data
    $this->db->insert('users', $data);
    }
}
?>

视图和控制器目前按原样工作。如果输入的信息正确,则格式 "submits",即。密码匹配,电子邮件有效等,但我没有编码 php 来正确地将数据发送到数据库。我可以使用 stmt 正确执行此操作,但我想使用该框架来处理与数据库有关的所有事情,因为它是内置的。

有没有人知道我需要做什么,或者可以给我示例代码,使它能够工作并将数据发送到数据库。

我已经查看了 codeigniter 文档并了解了如何设置验证规则等,但它似乎没有讨论如何将数据实际发送到数据库。

如果有人知道link,那也会很有帮助。

您必须像这样在 controller 末尾加载视图文件:

<?php
class Register extends CI_Controller {

    public function index()
    {
        $this->load->helper('url');
        $this->load->library('form_validation');

        $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
            array('required' => 'You must provide a %s.')
        );
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('header');
            $this->load->view('user/register');
            $this->load->view('home');
            $this->load->view('footer');
        }else {

            $data = $this->input->post();

            $allowed = array('username','email','password');

            $data = array_intersect_key($data,array_flip($allowed));

            //$data['password'] = do_hash($data['password']); ...

            $this->load->model('registration');
            $this->registration->form_insert($data);

            // set sessions and login data ... 

            redirect('dashboard/lfg');
        }
    }
}
You can also load helper,library and model in --construct() function only one time

<?php
class Register extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->helper('url');
        $this->load->library('form_validation');
        $this->load->model('registration');
    }

    public function index()
    {


        $this->form_validation->set_rules('username', 'Username','trim|required|min_length[5]|max_length[12]');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
            array('required' => 'You must provide a %s.')
            );
        $this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('header');
            $this->load->view('user/register');
            $this->load->view('home');
            $this->load->view('footer');
        }else {

            $data = $this->input->post();

            $allowed = array('username','email','password');

            $data = array_intersect_key($data,array_flip($allowed));

            //$data['password'] = do_hash($data['password']); ...

            $this->registration->form_insert($data);

            // set sessions and login data ... 

            redirect('dashboard/lfg');
        }
    }

register.php - 控制器

<?php
 class Register extends CI_Controller {
 function __construct()
{
    parent::__construct();

    $this->load->model('Registration');

}

        public function index()
        {
                    $this->load->helper('url');
          $this->load->library('form_validation');
                    $this->load->view('header');
                    $this->load->view('user/register');
                    $this->load->view('home');
                    $this->load->view('footer');

          $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
          $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]',
            array('required' => 'You must provide a %s.')
          );
          $this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
          $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

          if ($this->form_validation->run() == FALSE) {
            $this->load->view('user/register');
          }
          else {
             $data= array("username"=>$this->input->post('username'),
            "password"=>$this->input->post('password'));
           $this->Registration->form_insert($data);
            header( 'Location: dashboard/lfg' ) ;
          }
        }
    }

    ?>