0

私のコードでは、これに対する解決策はエラーです

PHP エラーが発生しました

重大度: 警告

メッセージ: ヘッダー情報を変更できません - ヘッダーは既に送信されています (出力は /home/websites/public_html/application/controllers/user.php:64 で開始)

ファイル名: helpers/url_helper.php

ライン番号: 546

これは私のコードです

function register()
{
                     $email=$_POST['email'];
                    $pass=$_POST['pass'];
                     $cpass=$_POST['cpass'];
            $valid = array(
                                    array(
                                        'field'   => 'email',
                                        'label'   => 'Username(Email)',
                                        'rules' => 'trim|required|valid_email|is_unique[register.email]'
                                    ), 
                                    array(
                                        'field'   => 'pass',
                                        'label'   => 'Password',
                                        'rules'   => 'trim|required||matches[cpass]|min_length[8]|max_length[30]|'
                                    ),
                                    array(
                                        'field'   => 'cpass',
                                        'label'   => 'Confirm Password',
                                        'rules'   => 'trim|required'
                                    )
                            );
                $this->form_validation->set_rules($valid); 
        $this->form_validation->set_error_delimiters('<div class="error_txt">', '</div>');
        if ($this->form_validation->run() == FALSE)
        {
            echo "error";
            redirect('/home/'); 
        }
        else
        {

            $this->load->model('User_model');       
            $rs=$this->User_model->register($_POST);

            redirect('/home/'); 
        }
}
4

3 に答える 3

5

おそらくここで起こっています:

エコー "エラー";

代わりに、呼び出し元にエラーを返してから、ビューからエラーを表示してみてください。

于 2012-04-20T13:33:29.097 に答える
0

redirect実際にLocationヘッダーをブラウザに送信します。

出力はすでに開始されています。サーバーは、出力が開始される前にヘッダーを送信する必要があります。echoリダイレクト前に実行しています。出力が開始された後にヘッダーを送信できないため、エラーがスローされます。

それを削除するechoと、うまくいくはずです。

于 2012-04-21T16:20:51.077 に答える
0

ajax 呼び出しでリダイレクトを使用しないでください。JavaScriptリダイレクトで目標を達成できます。このスニペットを試してください:

if ($this->form_validation->run() == FALSE)
{
  echo "error";
}
else
{
  $this->load->model('User_model');       
  $rs=$this->User_model->register($_POST);
}

JAVASCRIPT では:

window.location = '<?php echo site_url('home'); ?>';
于 2012-04-20T15:04:25.940 に答える