2017-02-01 10 views
0

の設定に問題この方法。 これまでのところ、この方法は期待通りに機能しますが、ユーザーがページを更新するとエラー404ページが表示されます。私は、ユーザーが現在のページを更新している間私は、インデックスメソッドで$this->session->keep_flashdata('img_path');を追加する必要が生きflashdataを維持したい、そうするために(またはコンストラクタ、私は両方試した)、または私は別の$this->session->set_flashdata('img_path',$pathToFile);が、私のためのソリューションdoes't作業の両方を追加する必要があります。どうして?テストのために 私は方法の最後にvar_dump($this->session->flashdata('img_path'));を入れました。後、私はimg_pathを持っていますが、リフレッシュした後、それは価値が私は、私はこの方法でflashdataを設定しようとしたしないと、私はそれを持っていますし、ページを更新した後、それがnullに設定されます。このメソッドにリダイレクトします。 fileという名前の他のフラッシュデータには決して割り当てられた値が割り当てられません。なぜこうなった?CodeIgniterのこれが方法で私のコードですflashdata

私のセッションの設定はとして怒鳴ると私はautoload.phpでセッションライブラリをロードし、それが他のコントローラやページで正常に動作します。

$config['sess_expiration'] = 0; 
$config['sess_save_path'] = APPPATH . 'cache/'; 
$config['sess_match_ip'] = FALSE; 
$config['sess_time_to_update'] = 300; 
$config['sess_regenerate_destroy'] = FALSE; 

-------------------------------------

UPDATE

-------------------------------------

コード内で少しシンプル:

public function test1() { 
    $this->session->set_flashdata('img_path',"abc"); 
    redirect('imgs/test2','refresh'); 
} 

public function test2() { 

    $this->session->keep_flashdata('img_path'); 
    $pathToFile = $this->session->flashdata('img_path'); 
    if ($pathToFile) { 
     $this->session->set_flashdata('file' , $pathToFile); 
     $this->session->set_flashdata('img_path' , $pathToFile); 

     var_dump($pathToFile); 
    } else { 
     show_404(); 
    } 
} 

私がlocalhost/imgs/test1に行くと、それはフラッシュデータを設定し、localhost/imgs/test2にリダイレクトされ、var_dump(...)セクションが実行され、私のために「abc」が詳細に印刷されます。 しかし、ときに私はkeep_flashdataを使用した場合であってもflashdataは、もはや存在していないため、ページをリフレッシュすると、その私に404 error pageを示しました。

+0

実際には意図しない方法でflashdataを使用しています。なぜあなたのセッションでそれを設定し、それが完了したときにそれを設定解除しないでください? – Kisaragi

+0

ユーザー変更コントローラの場合、セッションを破棄したい。私はこれが他のコントローラのコンストラクタで余分なコーディングなしでセッションが存在する場合、セッションを削除するための最良のアプローチだと思った? –

答えて

0

それはkeep_flashデータで動作するはずです。例:

public function test() { 
     //From this request session will be set 
     $this->session->set_flashdata('img_path',"abc"); 
     redirect(base_url()."home/test"); 
    } 

    public function index() { 
    $this->session->keep_flashdata('img_path'); 
    $pathToFile = $this->session->flashdata('img_path'); 
    if ($pathToFile) { 
     $this->session->set_flashdata('file' , $pathToFile); 
     $this->session->set_flashdata('img_path' , $pathToFile); 

     $data[ 'pageTitle' ] = BLOGER_TITLE . ' دانلود تصاویر'; 
     $data[ 'is_logedin' ] = $this->is_logedin(); 
     $data[ 'banners' ] = $this->_getBanners('side'); 
     $data[ 'img_name' ] = basename($pathToFile); 
     $this->load->view('download_image' , $data); 
    } else { 
     show_404(); 
    } 
+0

クイックアンサーに感謝しますが、test()関数で同じメソッドにリダイレクトするか、インデックスメソッドにリダイレクトする必要がありますか? –

+0

は機能しません。設定する必要がある設定はありますか?リフレッシュ後のフラッシュデータはクリアされます。あなたが '$ this-> session-> keep_flashdata( 'img_path');を使用している場合はリフレッシュ前に値 –

+0

を持っていますが、フラッシュデータは消去されません。コードを再確認してください。また、セッションデータを分散していないかどうかを確認してください。 –

関連する問題