2010-11-28 7 views
2

내 응용 프로그램에 POST/REDIRECT/GET 패턴을 사용하고 있습니다. 그러나 문제가 있습니다 :PRG 패턴 문제가 있습니까?

GET 단계에서 메시지를 표시하려면 POST 단계에서 세션 변수로 저장할 수 있습니다 (어떤 메시지를 표시할지 결정할 때). 예를 들면 다음과 같습니다. $_SESSION['message']='mplampla';

이 기술을 사용하면 다른 페이지에서 실수로 다시 표시되지 않도록 메시지를 표시 한 후에 설정을 해제해야합니다. 그러나 사용자가 되돌아 간 다음 GET 페이지로 다시 이동하면 메시지는 처음으로 설정 해제되었으므로 두 번째로 표시되지 않습니다.

다른 웹 사이트에서이 문제를 어떻게 관리하고 있는지 모르겠는데 ... 같은 URL에서 등록이 성공한 후 메시지를 표시하고 뒤로/앞으로 할 때 올바르게 작동하는 등록 양식이있는 웹 사이트를 보았습니다.

+0

오해의 여지가 있지만 세션을 설정 해제하면 존재하지 않기 때문에 더 이상 표시되지 않습니다 ... – martynthewolf

+0

메시지를 가져온 후 설정 취소 – GorillaApe

답변

4

메시지를 $_SESSION에 저장하지 마십시오. 대신 GET 페이지에 매개 변수로 전달하십시오.

는 예를 들어, GET 단계에서, widget.php에서 수행

http://localhost/widget.php?edit=1&message=saved 그런

로 사용자를 리디렉션 : 사용자가 다시 앞으로가는 경우

$message = isset($_GET['message']) ? $_GET['message'] : null; 
$output = null; 
switch($message) { 
    case 'completed': // possibly use a constant here, eg MESSAGE_COMPLETED 
     $output = 'Your changes has been saved.'; 
     break; 
    case 'failed': 
     $output = 'ERROR: failed to save changes!'; 
     break; 
} 

// Now present $output to the user anyway you like 

, 메시지는 여전히 것입니다 그냥 잘 표시됩니다. 또한 세션 상태와 관련된 모든 문제를 방지합니다.

+1

제안 사항에 대해 감사드립니다. 그러나 어떻게 작동하는지 확인할 수 있습니까 ?? https://secure.plaisio.gr/User/register.aspx?ReturnUrl=/Controls/Checkout/Default.aspx 등록기가 어떻게 등록되어 있는지 알지 못한다 : S – GorillaApe

+0

η ε ε α α λ λ λ η η η η η η ... :) – Jon

+0

εοσσον σαυματαταααααγατοσααααγεαικος εαεείας τοι ιδιο ται με το ιδιο url να βααζειαλλο μονυμα οπως κανουν στο πλαισιο! – GorillaApe