2012-07-27 1 views
4

으로 'GET'을 평가하지 않습니다,하지만 난 형태가 제출되었는지 여부를 확인하기 위해 노력하고있어

GET 또는 POST 인 경우 그래서 기본적으로 내가 사용

if($_SERVER['REQUEST_METHOD'] == 'GET') 

또는 그러나

if($_SERVER['REQUEST_METHOD'] == 'POST') 

, 나는 내가 어떤 양식을 제출, 그냥 직접 페이지로 이동하지 않으면 찾을 - 간단한 HTTP 요청의 REQUEST_METHOD입니다 GET. 뭐라 구요? 디자인에 의한 것인가? 그렇다면 이전 명세서를 사용하여 양식이 GET을 통해 제출되었는지 여부를 확인할 수 없습니다. 약간 중복 된 것 같습니다 ...

좀 더 지식이있는 분은 나에게이 사실을 설명해 주시면 고맙겠습니다. 감사.

+2

도움이 될 경우 : 대개 count ($ _ GET) 또는 count ($ _ POST)로 확인합니다. – NotGaeL

+0

네, 감사했습니다. – chaser

+3

@elcodedocle'empty ($ _ POST)'와'empty ($ _ GET)'은'count()'보다 약간 효율적이지만 많지는 않습니다. – DaveRandom

답변

7

기본적으로 대부분의 HTTP 요청은 GET 요청입니다.

if($_POST)을 사용하여 POST인지 확인할 수 있습니다. _GET 데이터 $가있는 경우

그러나, if(count($_GET)>0)가 당신을 말할 것이다 (즉, 거기에 POST 데이터를 배열입니다. 모든 페이지가 $_GET 세트를 가지고, 그래서 if($_GET) 그것이 GET 인 경우에 말할 작동하지 않습니다).

당신은 POST를 모두 가지고 있고 (즉, http://example.unreal?GetData=4&OtherData=no)

+0

설명해 주셔서 감사합니다. 지금부터 카운트를 사용합니다. ++++ – chaser

1

은 단순히 당신의 브라우저를 통해 페이지로 이동 그것에서 GET 데이터를 URL로 POST 요청을 보내거나 링크를 클릭하여,하지만 데이터를 얻을 수있는 것은 GET입니다 의뢰.

+0

알겠습니다. 감사. – chaser

1

동일한 문제가 발생하여 다음과 같이 처리되었습니다. 양식 작업을 iprofile?r=search으로 설정하면 요청 방법이 항상 GET되고 양식의 모든 입력 데이터가 손실됩니다. 그러나 작업을 iprofile/?r=search으로 설정하면 요청 방법이 POST가됩니다.

조치 URL을 확인할 수도 있습니다.