2013-10-03 4 views
1

HTML 폼이 PHP 스크립트로 전송 될 때 무슨 일이 일어나고 있는지, 그리고 무엇보다 실제로 $ _GET 및 $ _POST 내부에 무엇이 있는지에 대한 이해를 시도합니다. 아프지 만 내가 이해하지 못하는 것을 설명하려고 최선을 다합니다.PHP 폼이있는 HTML 폼

지금까지의 나의 이해는 : HTML 형식 이름의는 "값"HTML 양식 내부 쌍은에 삽입 = 요청이 단절 제작 된 HTTP와 값의 일부가 제출되면 슈퍼 - 글로벌 데이터를 보내는 데 사용 된 메소드에 따라 PHP 배열 $ _GET 또는 $ _POST. 권리?

내 질문 : 우리가 입력 요소를 줄 경우

  1. : 이름 = "테스트 []"와 포스트 방식으로 보내는 다음 위의 정보를 기반으로, 문자열은 "테스트는 []"입니다 $ _POST로 발송되었습니다. 그래서 $ _POST는 "test []"값을 가진 문자열을 포함하고 있거나 test라는 배열을 포함하고 있습니까? 우리는 배열 내에 배열을 두는가?
  2. 입력이 name = "name"인 경우 "name"문자열 만 서버로 보내지면 사용자가 해당 필드에 입력 한 값을 선택하는 방법은 무엇입니까?
+0

브라우저 개발자 콘솔에서 헤더와 요청을 확인하십시오. –

+0

* 배열 내에 배열을 넣고 있습니까? * 이것에 대해 이상한 점이 있습니까? –

+0

var_dump ($ _ POST); var_dump ($ _ GET); 그 안에 무엇이 포함되어 있는지 알려줄 것입니다. – Pwner

답변

1

name[]과 같은 이름은 예상대로 확장되지 않을 수도 있습니다. 당신이있는 경우 :

<input type="checkbox" name="foo[]" value="bar" /> 
<input type="checkbox" name="foo[]" value="ipsum" /> 

을 당신은 모두 확인란을 선택합니다. 당신은 얻을 것이다 :

array(
    "foo" => array("bar", "ipsum") 
) 

만 2 당신이 얻을 것이다 하나를 선택하면 : 키도

array() 

(그렇게하지 : 없음을 확인하지 않는 경우

array(
    "foo" => array("ipsum") 
) 

는 당신이 얻을 것이다 foo 존재). 텍스트에 대한

은처럼 빈 값을 보내드립니다 입력 :

array(
    "foo" => "" 
) 

그러나 확인란 것이 다릅니다.

+0

이것은 정확히 내가 찾고있는 것입니다. 나는 이것을 이해할 때까지 앞으로 나아갈 수 없었다. 고맙습니다. 그것은 다소 이상하다. – DEdesigns57

+0

양식 데이터를 직렬화하는 방법과 관련이 있습니다.나는 그것이 조금 이상하다는 것에 동의 할 것이다. – Halcyon

0

브라우저에서 양식의 모든 값을 전송하면 name1=val1&name2=val2 (이름 및 값 쌍을 &으로 구분) 형식으로 표시됩니다.

그러면 구문 분석하고 (parse_str()을 사용하여 테스트 할 수 있습니다) $_POST 또는 $_GET 배열에 배치합니다 (양식 방법에 따라 다름). 이 단계에서 모든 [] 건수가 배열로 확장됩니다.

그리고 배열에 배열을 넣을 수 있습니다. 또한 다음 배열을 해당 배열에 넣을 수 있습니다. multidimensional array이라고합니다.