2013-06-19 3 views
0

나는 현재 php와 html로 뛰어 들고 있으며 url을 통해 데이터베이스 컨텐츠를 보여주기위한 단순한 리다이렉션 작업을하고있다.헤더 대 폼 액션

난 당신이 아마 2 가지 방법으로 URL을 생성 할 수 있습니다 알고 있지만 나는이 질문을 시작 이유는이 두 이유가 있습니다 :

PHP :

<?php 
    header('Location: example.php?parameter'); 
?> 

HTML :

<form action="example.php" method="post"> 
<!--input fields etc --> 
<input type="submit"> 

하지만 지금은 "이 두 가지 옵션과 관련하여 가장 좋은 방법은 무엇인가"에 대해 궁금해하고있었습니다. 그것은 당신이 가장 좋아하는 것과 개인적인 의견 일 뿐이며, 상황에서 가장 적합한 방법은 무엇인가, 아니면 내가 바라 보는 뭔가가 있습니다.

여기서는 토론을 시작하려하지 않고 단지 '일반적으로/일반적으로'사용되는 것에 관심이 있습니다.

미리 감사드립니다.

+0

예 알아요. 그래서 제가 묻는 이유가 아닙니다. 나는 php보다는 오히려 dan html로 이것을하는 것을 선호하지만 사용하고있는이 방법에 대한 단점이있다. 이 방법을 사용하는 동안 리디렉션을 사용해야 할 때 가능하지는 않지만 그 외에는 리디렉션을 사용해야한다는 것을 이해할 수 있습니다. 다른 이유가 있습니까? –

답변

2

이 두 코드는 근본적으로 다른 작업을 수행하지만, 어떤 경우에는 사용자가 관찰 한 행동이 매우 유사 할지라도.

<?php 
    header('Location: example.php?parameter'); 
?> 

는 기본적으로이 또 다른 위치로 이동해야 브라우저를 말하는 서버의 방법입니다

은 서버 시작 리디렉션입니다. 브라우저는이를 무시할 수는 있지만이를 무시할 이유는 없습니다. 브라우저에이 재 지정이 임시 또는 영구적인지 또는 다른 조건이 있는지를 알려주는 추가 세부 정보를 응답에 추가 할 수 있습니다. 그러나 가장 단순한 서버는 "나는 여기에 당신을 위해 아무것도 가지고 있지 않습니다. 귀하의 정보를 얻기 위해 그곳으로 가십시오."라고 말하는 서버입니다.

<form action="example.php" method="post"> 

음, "클라이언트 시작"양식을 게시의 실제 행동에 브라우저에서 온다 :

는 클라이언트가 시작한 폼 POST입니다. 아마도 서버가 HTML 태그를 클라이언트에 제공하여이를 수행하도록 지시했지만 클라이언트는 원할 경우이를 자유롭게 변경할 수 있습니다. 그러나 그렇게 할 이유는 없습니다. 여기에서 요점은 클라이언트가 데이터를 example.php으로 보내는 수단이라는 것입니다. 리디렉션과는 아무 관련이 없습니다. 서버의 특정 리소스로 데이터를 보내는 것입니다.

서버는 리디렉션, 렌더링 된 페이지 또는 다른 응답으로 해당 데이터에 응답 할 수 있습니다.

여러 가지 방법을 조합하여 사용할 수 있습니다. page1.phppage2.php이 있다고 가정 해 보겠습니다. page1에는 양식이 있고 그 양식이 제출 된 후 사용자는 page2을 보길 원합니다. 이것은 사용자가 관찰 한 결과를 구별 할 수없는 부분입니다.

page1page2에 게시 할 수 있으며 page2은 제출 된 데이터를 처리하고 표시 할 수 있습니다. 또는page1page1에 게시하고 제출 된 데이터를 처리하고 page2으로 리디렉션 할 수 있습니다. 최종 사용자에게는 본질적으로 차이가 없습니다. 주요 차이점은 코드를 구성하는 방법에 있습니다. 그 점에서, 개인적 취향이 중요합니다. 그러나이 도구 중 하나를 사용하는 유일한 시나리오는 아닙니다. 예를 들어 완전히 다른 이유로 완전히 다른 페이지에 값을 제출하거나 클라이언트가 완전히 알 수없는 일부 서버 측 이유로 페이지 요청을 리디렉션 할 수 있습니다.

더 복잡한 웹 응용 프로그램을 개발할 때 어떤 상황에서는 특정 패턴이 잘 작동하고 개인적 선호도는 해당 패턴과 일치하기 시작합니다. 결국 이들은 행동을 수행하는 도구 일뿐입니다 (클라이언트를 다른 위치로 리다이렉트하고 서버에 데이터를 보내면됩니다). 중요한 패턴과 관행은 도구를 사용하기 만하면됩니다.

+0

감사합니다. 이것은 정확히 제가 찾던 답변이었습니다. 나는이 2 가지 "방법"의 메커니즘에 대한 통찰력을 좀 더 얻었습니다! –

1

HTTP location 헤더와 HTML 양식은 실제로 비교할 수 없습니다.

PHP를 실행하는 동안 리디렉션을 만들려면 헤더를 사용해야합니다. 클라이언트 측 (브라우저)에서 서버 측으로 사용자 입력을 제출하려면 양식을 사용해야합니다. 당신이 HTML 양식 또는 링크를 사용

<a href="example.php?parameter">Click</a> 
+0

알겠습니다. 알겠습니다. 유일한 것은 클릭하지 않고 리디렉션하려는 경우 앵커 방법이 적합하지 않다는 것입니다. 반면에 양식을 작성할 때는 클릭하거나 Enter 키를 눌러야합니다. –

+2

작업에 가장 적합하고 적합한 것을 사용하십시오. 모든 방법에 적합한 한 가지 크기를 찾지 말고 가능한 방법의 이점과 한계를 살펴보고이를 바탕으로 결정하십시오. – MrCode

1

대부분의 경우 :

HTML 앵커는 웹 페이지의 링크를 제공하는 가장 좋은 방법입니다. header()는 코드 실행 후 사용자를 리디렉션하려는 경우에 주로 사용됩니다 (예 : 로그인 성공 후 또는 제한된 페이지에 액세스 할 권한이없는 경우)