2011-07-30 5 views
1

가능한 중복 :
How to access a variable in a PHP class that is set by another function? CodeigniterCodeigniter URL 문제! 새로 고침을 누르면 함수가 실행됩니다!

I라는 컨트롤러가

제출 :

기본적으로는 우려의 두 가지를 수행합니다

  1. validate_form()를 - 유효성 검사 양식을 입력 한 다음 데이터베이스에 제출하십시오.
  2. 성공() - 이전 작업이 성공했는지 여부에 대한 피드백을 제공하는 페이지를로드합니다.

컨트롤러가 정상적으로 작동하지만 성공 페이지가로드 될 때 약간의 문제가 있습니다. 새로 고침 "성공"페이지를 누르면 어떤 이유로 인해 내 validate_form() 함수가 다시 실행되어 동일한 데이터가 데이터베이스에 복제됩니다.

내가 원하는 사용자는 성공 페이지로 갈 때 그들이 원하는 횟수만큼 새로 고침 칠 수 있으며 늘 어떤 기능 등을 호출 할 것입니다

성공보기에 내 URL이

입니다

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 섹션을 살펴보면 필요한 작업을 수행 할 수 있습니다. –

관련 문제