2016-09-13 2 views
0

큰 사이트에서 일하고 있으며 자동차에 필터링 기능이 있습니다. 폼 필터링이 어떻게 작동하는지 설명하겠습니다 :GET에서 POST로 양식 제출 변경 PHP

그래서 사용자가 필터 옵션, 자동차 번호, 그래서 프레스를 선택하면 서버 (PHP)에 대한 GET 요청이 발생합니다. 모든 변수가 $ _GET에서 $ _POST로 변경되었습니다. 변경된 양식 제출 방법을 사용할 때 문제는 양식에서 많은 수의 항목을 반환 할 때 2 페이지 이상있을 수 있으므로 사용자가 두 번째 또는 세 번째 페이지를 클릭 할 때이 코드가 모두 다음과 같은 요청에 페이지 번호를 추가하는 것입니다. .example.com/GET_REQUEST_VARIABLES -> www.example.com/pagenumber & GET_REQUEST_VARIABLES. 그런 식으로 서버는 두 번째 페이지 항목을 반환합니다.

하지만 난 POST 요청을 보낼 때 서버가 무엇을 반환할지하지 않도록,이 URL에 저장되지 않습니다,

당신은 내가이 문제를 해결하는 데 도움이 수 있습니까?

당신은 내가

+1

2 페이지로 이동하면 $ _POST에 저장된 모든 옵션이 손실됩니다. 또는 페이지 2로 가면 페이지 번호가 URL에 추가되지 않으므로 페이지 2가 없습니다. –

+1

2 페이지로 이동하면 서버가 게시물을 사용하기 전에 보낸 모든 변수를 잃어 버리며 페이지 번호를 추가하지만 다른 요청으로 인해 게시물에서 보낸 변수를 추가하지 않습니다 – nikagar4

+0

$ _POST 변수를 $ _SESSION 변수? 이렇게하면 페이지간에 이동할 수 있습니다. 그렇지 않으면 매번 정보를 다시 POST해야 할 것처럼 들립니다. $ _SESSION을 권하고 싶습니다. – ckimbrell

답변

1

당신이 POST 대신 GET을 사용하는 이유가 여기에 명확하게 설명하면 내가 모르는 질문을하면 내가 더 잘 설명 할 수 있습니까? 이 경우에는 GET을 사용하는 것이 더 친절합니다. 양식 제출시 중요한 데이터를 보내지 않으므로 POST를 사용할 이유가 없습니다. GET을 사용하는 또 다른 이점은 검색 결과에 직접 연결할 수 있다는 것입니다. 예를 들어 Honda Fit을 검색하여 아내를 표시하려면

(차이점은 POST와 GET의 차이점을 알기 위해 HERE을보십시오).

다른 질문에 답하기 위해 POST는 URL을 사용하지 않습니다. GET 만 수행합니다. 따라서 양식 데이터를 URL에 직렬화해야하는 경우 GET을 사용해야합니다. 양식 제출 방법을 POST로 변경 했으므로 수용하기 위해 서버 측 로직을 변경해야합니다. 내가 사용하고있는 서버 측 기술을 모른 채 사용하지 않아도됩니다. 당신이 PHP를 사용하는 가정하면, 당신은 단지 변경, MAN 페이지에 대한 더없는 경우 here

을 시작할 수있는 모든 $ _GET은 [ 'fieldName에이'] $ _POST [ 'fieldName에']에 PHP에서 호출

항상 첫 번째 페이지를 POST 할 수 있으며 페이지 번호로 GET ONLY 만 사용하십시오. 이 형식으로하면됩니다.

<form method="post" action="www.foo.com/search?page=1"> 

그런 다음 POST 된 변수를 $ _SESSION 수퍼 글로벌에 저장할 수 있습니다. 팔. 게시 된 페이지 매김.

$nextPageURL = 'www.foo.com/search?page=' . $_GET['page'] + 1; 
if($_GET['page'] !== '0'){ 
    $lastPageURL = 'www.foo.com/search?page=' . $_GET['page'] - 1; 
} 
+0

게시 요청을 사용하는 이유는 요청이 너무 길어지고 서버가 "큰 URL"오류를 반환한다는 것입니다. – nikagar4

+0

예, 맞습니다. 요청이 앞으로 커지면 어떻게해야합니까? – nikagar4

+0

줄 아래로 문제가 발생하면 길이를 늘릴 수 있습니다. –