0

フォームの検証について多くの質問があるようですが、私の問題に答えるものはありません。

明らかな何かが欠けていない限り、フォームの検証は実行されませんが、特定のページでのみ実行され、他のすべてのページは問題ありません。

問題のコードは次のとおりです。

public function activate($code = '')
    {
        // This function lets a user activate their account with the code or link they recieved in an email
        if($code == '' || isset($_POST[''])){
            $form = '';
            $this->load->library('form_validation');
            $this->load->helper('form');

            if ($this->form_validation->run() == FALSE){
                // No code, so display a box for them to enter it manually
                $this->form_validation->set_rules('activation_code', 'Activation Code', 'trim|required|xss_clean|integer');

                $form .= validation_errors();
                $form .= form_open_multipart('user/activate', array('class' => 'formee'));

                $form .= form_label('Enter your activation code below and click \'Activate\' to start using your account. If you need a hand please contact live chat.', 'activation_code');
                $form .= form_input(array('name' => 'activation_code'));

                $data = array(
                    'name'        => 'submit',
                    'value'       => 'Activate',
                    'class'       => 'right',
                    'style'       => 'margin-top:10px;',
                );

                $form .= form_submit($data);
                $form .= form_close();
            }else{
                $form .= "form run";
            }
        }else{
            // Code recieved through the GET or POST variable XSS clean it and activate the account
        }

        $data = array(
            'title' => $this->lang->line('activate_title'),
            'links' => $this->gen_login->generate_links(),
            'content' => $form
        );
        $this->parser->parse('beer_template', $data);
    }

ここでページを見ることができます:http://77.96.119.180/beer/user/activate

ここでフォームの検証が機能していることを確認できます。http://77.96.119.180/beer/user/register

誰でも助けることができますか?

4

1 に答える 1

3

実行後に set_rules を呼び出します。

if ($this->form_validation->run() == FALSE){
  // No code, so display a box for them to enter it manually
  $this->form_validation->set_rules('activation_code', 'Activation Code', 'trim|required|xss_clean|integer');

しかし、前にする必要があります:

$this->form_validation->set_rules('activation_code', 'Activation Code', 'trim|required|xss_clean|integer');
if ($this->form_validation->run() == FALSE){
}
于 2012-06-22T12:06:50.343 に答える