2011-07-30 75 views
1

可能重複:
How to access a variable in a PHP class that is set by another function? CodeigniterCodeigniter URL問題!點擊刷新會導致函數被執行!

我有一個名爲控制器提交:

基本上它關注的兩件事情:

  1. validate_form() - 它驗證es表格 - >然後提交至 數據庫。
  2. 成功() - 它載入一個頁面,提供關於 之前的操作是否成功的反饋。

我的控制器工作正常,但是當它載入我的成功頁面時有一個小問題。 如果您點擊刷新「成功」頁面,它會由於某種原因導致我的validate_form()函數再次運行,導致相同的數據在數據庫中被複制。

我要的是,當用戶進入到成功頁面,他們可以刷新打,因爲他們喜歡很多次,它不會調用任何函數等

我對成功的看法網址是

http://localhost/site/validate_form

我猜是這樣的問題,因爲它仍然是在validate_form()函數。

我的驗證窗體函數通過調用其中的另一個函數加載成功視圖? 這裏是我的代碼:

//Record ID = returned value 
         $record_id = $this->submit_model->create_record($completedstaffrows, $completedeventrows); 

         //if no value returned call failed function 

         if ($record_id == FALSE) 
         { 
          $this->failed(); 
         } 

         //Submittal to database was successful 
         //Now call function to load success view 
         else 
         { 

          $this->success(); 
         } 

我的加載成功的視圖功能:

public function success() 
     { 
      $page['page'] = 'success'; 

      $this->load->view('template', $page); 

     } 

回答

1

你需要的是一個Post/Redirect/Get模式。提交表單後,將301重定向到同一頁面,也許使用會話變量來知道數據是否有效,這將防止刷新時出現任何重複的數據問題。

+0

好吧我嘗試了重定向,但是我現在有一個問題,我的變量,我通過原來的方式沒有傳遞給視圖,並導致錯誤(未定義)。我如何使用重定向傳遞變量? – sqlmole

+0

您可以使用[CI會話](http://codeigniter.com/user_guide/libraries/sessions.html)在請求之間存儲/檢索值。看看flashdata部分,它會做你需要的工作。 –

相關問題