이건 팁도 아니고 그냥 실험수준의 글이다. 한 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값은 설사 자신이 직접 속한게 아니더라도 보내버린다.
W3C는 nested form 의 동작에 대한 규정을 하지 않고 있습니다. 즉 어떻게 동작할지는 순전히 브라우저 벤더 맘대로라는 거죠. 대체로 inner form이 outer form의 일부로 편입되는 식으로 구현되는 것 같습니다. XHTML에서는 form내에 직접 form을 넣는 것은 문법상 불가능하고, inner form을 적당한 다른 element를 통해 넣어야 합니다.
네..생각해보니 XHTML 쓰게 되기 전에 하던 뻘짓이었네요. 어차피 실용성은 없으니…
주말에 영노형 딸 보고 왔어요 😀
꼬물꼬물 거리는게 매우 귀엽던데 ;ㅂ;
ㅎㅎㅎ 귀엽고 순하지
당췌.. 못하는게 뭐요? ㅋㅋㅋ
애를 못 낳아..
애플도 못 써. ㅋㅋ