簡體   English   中英

如何從Codeigniter中的表單驗證控制器訪問數據?

[英]How to access data from form validating controller in codeigniter?

我按照教程制作了帶有驗證的注冊表單,其中包含2個視圖和1個控制器。

我在控制器中寫道:

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

    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[3]|max_length[16]|xss_clean|callback_username_check');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|matches[passconf]|md5');
    $this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('register_form');
    }
    else
    {
        $this->load->view('register_success');

        $data = array(
        'IDUser' => NULL ,
        'Username' => "$username" ,         
        'Password' => 'password' ,
        'Email' => 'email' ,
        'Gender' => 'gender' ,
        'Birthday' => 'bday' ,
        );

        $this->db->insert('Accounts', $data);

    }


}

首先,它執行一個有效的sql插入。 之后,進行驗證。 但是,從數據庫加載的值並非來自驗證的值。 相反,它們是數組中相同的純文本。

我不想直接使用POST從表單/視圖中獲取值; 那是沒有意義的。 我該怎么辦? 我是Codeigniter的新手,並不熟悉OOP PHP。

您只需要使用Codeigniter Input類: http : //ellislab.com/codeigniter/user-guide/libraries/input.html

因此,在您的情況下:

$username = $this->input->post('username');
$password = $this->input->post('password');
$passconf = $this->input->post('passconf');
$email    = $this->input->post('email');

dragu是正確的,但請使用以下格式:

 $username = $this->input->post('username', TRUE); 

TRUE告訴Codeigniter XSS clean,這是您絕對想要的安全功能。 這就是為什么您將XSS放在表單驗證中的原因。 從您的示例:

 $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[3]|max_length[16]|xss_clean|callback_username_check');

如果表單驗證失敗,則CI可以再次在表單中顯示結果。 在驗證中使用xss_clean會清除這些值。

暫無
暫無

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

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