簡體   English   中英

如何在Codeigniter中驗證表單

[英]How to validate a form in codeigniter

我正在使用代碼點火器2.1.0 ad嘗試驗證表單(盡管此表單位於本網站的主頁上),已遵循此文檔但似乎未按預期工作。每次包括庫頁面重新排列。 請有人告訴我可能出了什么問題。以下是我要驗證的那部分頁面。

<?php echo validation_errors(); ?>
<form id="signup" action="" method="GET">
    <label>
        username:<input type="text" name="username" value="" size="31"/>
    </label>
    <br>
    <label>
        email:<input type="text" name="email" values="" size="31"/>
    </label>
    <br>
    <label>
        password:<input name="password" type="password" value="" size="31"/>
    </label>
    <br>
    <label>
        confirm password:<input name="passcon" type="password" value="" size="31"/>
    </label>
    <br>
    <label>
        date of birth:<input type="date" name="dob" value="" size="31" />
    </label>
    <br>
    <input type="radio" name="sex" value="male" /> Male<br />
    <input type="radio" name="sex" value="female" /> Female
    <br>

     <input id="button" type="submit" value="Signup" />
</form>

首先,您必須包括控制器中的form_validation庫:

$this->load->library('form_validation');

其次,您需要指定限制:

$this->form_validation->set_rules('username','Username','required|trim|minlength[6]');
$this->form_validation->set_rules('password','Password','required');
etc..

第三,您需要提交表格以防萬一:

if($this->form_validation->run()){
   // All requirement are met
}else{
   // Not all requirement are met
}

我建議您使用表單幫助程序而不是HTML標記,它可以使您的網站在URL更改的情況下更具可移植性。 所以在您看來,它看起來像這樣:

  <?php
  echo form_open('controllername/form_validation');
  echo validation_errors();
  $data = array(
          'size'=> '31',
        );
  echo form_input('username',$data);
  echo form_input('email',$data);
  echo form_password('password', $data);
  echo form_submit('login_submit', 'Login', $data);
  echo form_close();

然后在您的控制器中,創建一個稱為表單驗證的方法

public function form_validation(){
 $this->load->library('form_validation');
 $this->form_validation->set_rules('username', 'Username', 'min_length[5]|required|');
 $this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');// This is where you configure your rules
 $this->form_validation->set_rules('password', 'Password', 'required|md5|trim');
    if ($this->form_validation->run())// If all the rules are respected, run() function return a boolean 
    {
     // Add the behavior to adopt
    }

與Amir和Vincent一樣,您應該加載庫表單驗證,我通常在autoload.php中加載庫表單驗證。

 $autoload['libraries'] = array('database', 'session','form_validation');

我也使用會話進行flashdata。 oke也許你可以試試這個。

視圖:

<?php echo $this->session->flashdata('flash_info'); ?>
<form id="signup" action="" method="GET">
<label>
    username:<input type="text" name="username" value="" size="31"/>
</label>
<br>
<label>
    email:<input type="text" name="email" values="" size="31"/>
</label>
<br>
<label>
    password:<input name="password" type="password" value="" size="31"/>
</label>
<br>
<label>
    confirm password:<input name="passcon" type="password" value="" size="31"/>
</label>
<br>
<label>
    date of birth:<input type="date" name="dob" value="" size="31" />
</label>
<br>
<input type="radio" name="sex" value="male" /> Male<br />
<input type="radio" name="sex" value="female" /> Female
<br>

 <input id="button" type="submit" value="Signup" />
</form>

控制器:

$this->form_validation->set_rules('username', 'Fullname', 'required|xss_clean'); 
$this->form_validation->set_rules('email','Place Born', 'required|xss_clean');        $this->form_validation->set_rules('password','Fullname','required|xss_clean|matches[passcon]');

$this->form_validation->set_rules('passcon','Confirm Password', 'required|xss_clean|');
if($this->form_validate->run() == FALSE)
{
    $this->session->set_flashdata('flash_info',validation_errors()); 
     redirect('your_controller');
}else
{
    $this->session->set_flashdata('flash_info',validation_errors()); 
    redirect('your_controller');
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM