2

昨日は一日中警告エラーが出ていて、降りられません。何が起こっているのかわからない。1行目のproperty_model.phpでリダイレクトを実行する前に出力が送信されたと不平を言っています。私はそこに行き、すべてをチェックしましたが、運がありませんでした。空白もチェックしました。エラーとコードを貼り付けます。

PHP エラーが発生しました

重大度: 警告

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

ファイル名: helpers/url_helper.php

ライン番号: 542

上記のモデルのコードは次のとおりです。

<? class Property_model extends CI_Model {
    function __construct()
        {
            parent::__construct();
        }

        function insert_property($propertyID)
        {
            $this->property_id = $propertyID;
            $this->type = $_POST['property_type'];
            $this->city = $_POST['property_city'];
            $this->address = $_POST['property_address'];
            $this->description = $_POST['property_description'];
            $this->owner = $_POST['property_owner'];
            $this->date_added = date("Y-m-d");
            $this->price = $_POST['property_price'];
            $this->offer_type = $_POST['property_offer'];
            $this->contact = $_POST['property_contact'];
            $this->db->insert('property', $this);
        }

        function insert_image_details($id, $url, $extension)
        {
            $current->property_id = $id;
            $current->extension = $extension;
            $current->url = $url;
            $this->db->insert('photos', $current);
        }
    }
?>

およびリダイレクト呼び出しの使用 (モデルへの呼び出しを行うコントローラー呼び出し全体を含む):

<?php
class Property extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->helper('form');
                $this->load->helper('url');
        $this->load->model('property_model', 'propertymodel');
        $this->load->database();
    }

    public function index() {
        $this->load->view('home');
    }

    public function new_property()
    {
        $this->load->view('new_property', array('error' => '' ));    
    }

    public function create_property()
    {
        //Pass the posted data to model for insertion
        $propertyID = uniqid();
        $this->propertymodel->insert_property($propertyID); 
        $this->do_upload($propertyID);
        redirect('/home');
    }


        public function do_upload($propertyId)
        {
            $config['upload_path'] = './uploads/';
            $config['allowed_types'] = 'gif|jpg|png|jpeg';
            $config['max_size'] = '1000';
            $config['max_width']  = '1024';
            $config['max_height']  = '768';

            $this->load->library('upload', $config);
                if ( ! $this->upload->do_upload())
                {
                    $error = array('error' => $this->upload->display_errors());

                    $this->load->view('create_property', $error);
                }
                else
                {
                    $data = array('upload_data' => $this->upload->data());
                    //array to access all the file uploaded attributes
                    $image_data = $this->upload->data();

                    //parameters to be passed to model: 
                    $imgUrl = "../.".$config['upload_path'].$image_data['file_name'];
                    //$imgTitle = $image_data['file_name'];
                    $fileExtension = $image_data['file_ext'];
                    $this->propertymodel->insert_image_details($propertyId, $imgUrl, $fileExtension);
                }           
        }//end of function


}
?>

どんな助けでも大歓迎です

4

5 に答える 5

3

私も同じ問題を抱えていました。何も助けませんでした。次に、完全な新しいファイルを作成し、エラーの原因となったファイルの内容を新しいファイルにコピーすることにしました。これはうまくいきました!元のファイルの位置 0 に隠しバイトがあったようです。

于 2013-04-08T19:25:34.257 に答える
2

プロパティコントローラーに誤りがあります。メソッド create_property のこれらの 2 行を置き換えます。

$url= base_url().'home';
redirect($url);

redirect('/home');
于 2012-11-02T07:38:12.260 に答える
0

error_reportingを有効にしましたか?モデルは、ここに表示されていないエラーをスローする可能性があります。そして、このエラーにより、すでに送信されたヘッダーが発生します。

ちなみに、$currentメソッドのinsert_image_detailsどこから来たのですか?それはおそらくエラーをスローします。

于 2012-11-02T07:14:15.893 に答える
0

別の人が Stackoverflow に投稿したこの代替ソリューションを見つけました。

 //Alternate Code for solve this issue
    $url = 'site/function1';
    echo'
    <script>
    window.location.href = "'.base_url().'index.php?/'.$url.'";
    </script>
    ';

これは本当にうまくいきます!これを使用することに欠点がないことを願っています!サポートしてくれてありがとう。

Codeigniter: headers already sent エラー

于 2012-11-02T08:42:57.630 に答える
0

実際のページが読み込まれる前に警告が送信される場合があります。ドキュメント ルートの index.php で次の関数を使用して、エラー レポートを有効にしてください。

ini_set('display_errors', 'On');
error_reporting(E_ALL);
于 2012-11-02T08:13:41.097 に答える