2014-11-11 2 views
-2

최근 내 게시물/리디렉션 시스템에 결함이 있음을 알았습니다. 해결 방법이 없습니다. 자바 스크립트없이 작동하는 단계 시나리오에 의해이 단계를 고려/아약스 :같은 페이지에 게시 한 후 리디렉션하지만 "성공"메시지 표시

  1. 관리자는 포럼 페이지로 이동, 특정 스레드가 탐색합니다.
  2. 그는 스레드를 삭제합니다.
  3. 시스템이 삭제 요청을 deletePost.php로 전송합니다.
  4. 양식이 처리 된 후 deletePost.php는 "스레드가 성공적으로 삭제 된 페이지"를 표시하고 몇 초 후에 원래 스레드 페이지로 돌아 가기 헤더 새로 고침을 수행합니다 .
  5. HTML 헤드 태그 또는 헤더 (새로 고침 : 시간, url = url)를 사용하여 같은 페이지로 새로 고침하므로 사용자가 F5 키를 누르면 "양식 다시 제출 확인"메시지가 표시됩니다.

    . 내가 대안을 찾을 수 없습니다

    몇 가지 대안이 여기가 양식을 다시 제출 요청이 상황에서 저를 얻는 그리고 왜 그들은 또한 결함이 :() 재

  6. 가 아닌 새로 고침 PHP 헤더를 수행 양식 재 제출은 끝났지 만 이제 사용자에게 "성공"메시지가 표시되어 이상하게 보입니다.

  7. 동일한 페이지로 다시 리디렉션 할 때? success GET var를 추가하십시오. 기본적으로 우리는 새 페이지로 리다이렉트 되었기 때문에 이것은 효과적이다. 그러나 사용자가 F5를 치면 성공은 var가 영원히 거기에 남아있게합니다. 또한 사용자가 다시 검토하기로 결정하면 동일한 get var를 사용하여 동일한 페이지로 리디렉션되어 양식 다시 제출이 다시 발생합니다.

  8. 성공한 메시지를 세션 변수에 저장하고 리디렉션 된 페이지에로드 한 다음 원래 페이지로 시간 새로 고침 리디렉션을 수행하십시오. 이 문제는 사용자가 한 번에 많은 탭을 검토 할 때 세션 플래시 메시지가 매우 신뢰할 수 없다는 점에서 문제가됩니다. 서로 다른 페이지의 메시지는 어떤 탭에 속해 있는지 알 수 없습니다. 쿠키를 사용하지 않는 사람들도 메시지를받지 못합니다.

    자바 스크립트에 의존하지 않고 우아한 방법이 있습니까?

+0

GET 변수를 가져 와서 다시 원래 페이지로 리디렉션하는 특정 "Moderation success message"페이지로 리디렉션 할 수 있습니다. 모든 다른 양식이 문제없이 우아하게 리디렉션되기 때문에이 문제에 대한 특정 페이지를 만드는 관점에서는 생각하지 않았습니다. 그러나 아마도 내가이 문제에 대해이 솔루션을 사용하도록 강제 할 것입니다. 왜냐하면 동일한 페이지로 다시 리디렉션하고 싶을뿐입니다. 성공 메시지가 표시된 페이지 – Rob

+0

F5 키를 누르면' '폼 재 제출 확인'메시지가 표시됩니다. __NOT REDIRECTING__입니다. – itachi

+0

당신은 맞습니다 itachi, 그것은 적절한 리디렉션이 아니라 오히려 위치와 새로 고침. 질문에 맞게 변경하겠습니다. – Rob

답변

0

저는 개인적으로 세션에 플래시 메시지를 저장하는 것을 선호합니다.

$_SESSION[messages][$id] = array(
    'type' => 'success', 
    'content' => 'Deleted. 
) 

id는 스레드 ID입니다.

관련 문제