이중 form 태그를 사용했다면 데이터는 어떻게 보내지나?

이건 팁도 아니고 그냥 실험수준의 글이다. 한 6,7년전에 php에 한창 재미가 들렸을 때 했던 뻘 짓 중 하나.

다음과 같은 코드가 있다.

//test.php
<?
print_r($_POST);
?>
<form name=f1 method=post action=”test.php”>
<input type=”hidden” name=”aaa” value=”11″>

<form name=f2 method=post action=”test.php”>
<input type=”hidden” name=”bbb” value=”22″>
<input type=”submit” value=”Submit22″>
<input type=”hidden” name=”ddd” value=”44″>
</form>

<input type=”hidden” name=”eee” value=”55″>

<form name=f3 method=post action=”test.php”>
<input type=”hidden” name=”ccc” value=”33″>
<input type=”submit” value=”Submit33″>
</form>

<input type=”submit” value=”Submit11″>
</form>

즉, 1개의 form태그 안에 2개의 form이 들어가 있다. 이런 코딩을 할리는 없겠지만, 모든 뻘짓은 애초에 재미에 그 기반을 둔다.

사용자 삽입 이미지

미리보면 이런 이미지다. 여기에서 각 버튼 들을 눌러보면 어떤 답이 나올까?

 

 

정답

Submit22 :  Array ( [aaa] => 11 [bbb] => 22 [ddd] => 44 )

Submit33 : Array ( [ccc] => 33 )

Submit11 : Array ()

 

즉, submit 버튼을 누르면  form 태그로 둘러 쌓인 input값들을 보내지만, /form 태그로 닫힌 그 이전 값은 보내지 못한다.
설사 자신이 속한 form을 닫은게 아니더라도 말이다.
반대로 /form태그로 막히지 않은 영역의 input값은 설사 자신이 직접 속한게 아니더라도 보내버린다.