2009-12-19 3 views
0

에 _redirector 도우미를 사용하여 I 오류 컨트롤러에 컨트롤러 (경우에 따라)가 재 리디렉터 도우미를 사용하여 행동 '하지-로그인 한'. 내 문제는 다음과 같습니다 : 사용자가 로그인을 수행 한 후 해당 페이지로 돌아갈 수 있도록 $ _POST 배열 (리디렉션이 발생한 위치의 URL)에 인수를 전달하려고합니다.

리디렉션 도우미를 사용하는 동안 어떻게 $ _POST 배열에 데이터를 둘 수 있습니까?

감사합니다.

+0

리디렉션 할 때 절대로 POST 데이터를 보낼 수 없습니다. 오직 GET. 실제 리다이렉트 (redirect) 헤더는 "당신이 틀린 장소에 있고, 여기 [찾고있다]"라고만 알려줍니다. –

답변

4

(예. goToRoute)을 paramters은 함께 전달됩니다. 당신이 요청에 refferrer를 추가 따라서 경우에 당신은 실제로 리디렉션하기 전에 :

// Assuming $request is a Zend_Controller_Request 
$request->setParam('ref', $referrer); 
// then use the redirector 

는 그 변수를 재 지정시 요청과 함께 전달됩니다. 그러면 리디렉션 된 작업의 요청에서 해당 변수를 확인하거나 잡아서 양식의 숨겨진 필드로 설정해야합니다. 그런 다음 양식이 로그인 액션에 게시되면 다시 ref 변수가 있는지 확인하고 해당 위치로의 성공적인 로그인 리디렉션을 확인할 수 있습니다. 내가 당신이라면

지금 내가 실제로 URL하지만 이전 요청의 매개 변수의 직렬화 또는 JSON 인코딩 된 배열로 참조를 사용하지 않을 것입니다. 그런 식으로이 두 번째 인스턴스에서도 goToRoute을 사용할 수 있습니다.

는 당연히 리디렉션은이 작업을 수행 할 wouldnt가 민감한 데이터를 포함 사후 조치의 일종을 형성 온 경우. 이 경우 이전에 제안 된대로 세션을 사용하고 싶을 것입니다. 내가 줄 수있는 모든 최선의 충고 위

Zend_Controller_Router_RewriteZend_Controller_Action_Helper_Redirector의 코드를 살펴 보는 것입니다.

1

일부 소켓 또는 컬 jiggery pokery 없이는 불가능합니다.

같은 방식으로 $ _SESSION 배열을 사용해 보시지 않겠습니까?

사용자가 검색 주소창의 리디렉션 URL을 볼 수 있는지 여부가 중요합니까? 나는 그들이 신경 쓰일지 의심하고 몇몇 톱 사이트에서 몇 번 본다.

0

저는 사람을 다른 페이지로 리디렉션 할 때 POST를 보낼 수 없다고 확신합니다. 하지만 어쩌면 그렇게 할 수 있습니다. 만약 그렇다면 누군가가 나를 틀린 것으로 여기기를 바랍니다.

나는 당신이 젠드 프레임 워크를 사용하여 원하는 것을 할 것입니다 방법을 잘 모르겠어요,하지만 난 방법 일반적으로 그것을 수행하는 두 가지 방법을 제안한다. GET 변수를 보내거나 세션 변수를 사용하여 백 URL을 저장할 수 있습니다. 모두가 하나의 작용하에 속하는처럼 로그인 페이지로 제어를 전달

1

_redirect보다 _forward 같은 더 느낀다. 특히 당신이 곧 돌아올 것이기 때문에.

_forward($action, $controller = null, $module = null, array $params = null) 

그런 다음 원래 위치를 $params에 전달할 수 있습니다. 당신이 내부 리디렉션으로 리디렉터를 사용하는 경우