POST와 GET
앞에서 만들었던 PHP의 회원가입 페이지를 구동시키기 위해 POST와 GET이 무엇인지 알아봅시다.
POST
태그 내에서 사용된 각 컨트롤(입력상자들과 버튼)의 선택 사항을 action에 명시된 url로 전달하게 된다.
이때 입력상자나 버튼에 사용된 name 속성값을 변수명으로 하고 폼 양식에서 사용자가 입력한 내용이나 버튼에 사용된 value속성 값을 그 변수의 값으로 전달되며, 데이터의 길이에 제약이 없고 보안에 강하다.
GET
action에 명시된 URL의 주소 뒤에 ?를 붙이고 변수명과 값을 쌍으로 해서 원 하는 정보를 전달하게 되고, 변수가 여러 개일 경우에는 &로 구분된다.
GET방식은 간단하게 변수를 통하여 원하는 값을 전달할 때 사용하며, 웹 브라우저의 주소 창에 전달되는 값이 노출되는 단점이 있어 보안 측면이 취약하다.
즉 여러분이 주소뒤에 봤을 법한 www.coreasur.com?lecture=php&lec_num=5 에서 ?lecture=php&lec_num=5 이것이 GET 방식의 데이터 전달 방식이다.
그럼 소스로 테스트 해봅시다.
<?php echo $happy; echo "always happy"; ?>
위의 소스를 작성하고 저장해서 브라우저에 띄워주세요!
화면에 always happy만 출력됩니다. GET방식에 보면 url뒤에 ?를 붙이고 변수명과 값을 쌍으로 해서 원하는 정보를 전달하게 되고 변수가 여러개일 경우는 &로 구분된다고 하였죠 그럼
url뒤에 적어 봅시다. ? 를 적고 변수명 happy를 적고=I%20am 을 적습니다.
localhost/happy.php?happy=I%20am 이렇게 적으면 나와야 하는데 안나오는걸 보니 이상하네요.
안나오시는 분은 당황하지 마세요. 저도 안나옵니다. 안나오는 이유는 phpinfo의 설정때문입니다.
설정값중에 register_globals란게 있는데요 이 값이 on이면 작동은 되나 보안문제때문에 off가 디폴트값으로 되어있어서 입니다.
그리고 이것이 안된다고해서 on으로 바꾸시면안됩니다. 보안문제 때문에 off인 상태로 하시는게 좋습니다.
안되시면 다음과 같이 작성합니다.
<?php echo $_GET['happy']; echo "always happy"; ?>
이렇게 작성을 하시고 웹브라우저에 실행후에 필자는 happy.php로 저장하였습니다. 폴더는htdocs로해야 합니다.
http://localhost/happy.php?happy=i%20am%20
위와 같이 적어 주시면 $_GET['happy']에 i am이 들어가게 됩니다. %20은 공백입니다. 그외에 다른 문자들도 넣어서 테스트 해보세요!
&를 url에 사용하기 위해 여러개를 넣어봅시다.
<?php echo $_GET['happy']; echo "always happy <br />"; echo $_GET['human']; echo " are also happy <br />"; // are앞에 공백있어요 주의 공백을 넣어주세요. 안넣어도 상관은 없지만;;; ?>
그리고 주소를 아래와 같이 적어줍니다.
http://localhost/happy.php?happy=i%20am%20&human=you
human 앞에 &있죠?
결과는
그럼 이번엔 POST 방식을 알아볼까요.
이번은 이미 만들었던 회원가입 폼으로 연습해봅시다.
join_result.php 파일을 생성해서 다음과 같이 쳐봅시다. POST는 대소문자 구분을 하므로 대문자로해주세요.
<?php echo "post 방식을 배워봅시다. <br />"; echo "id ............. {$_POST['id']} <br />"; echo "name ............. {$_POST['yourname']} <br />"; echo "password ............. {$_POST['pwd']} <br />"; echo "confirm password ............. {$_POST['pwd2']} <br />"; echo "phone number.......... {$_POST['m1']} -{$_POST['m2']}-{$_POST['m3']} <br />"; echo "sex ............. {$_POST['sex']} <br />"; echo "address ............. {$_POST['addr']} <br />"; echo "hobby / computer ............. {$_POST['com']} <br />"; echo "hobby / sports ............. {$_POST['sports']} <br />"; echo "hobby / shopping ............. {$_POST['shop']} <br />"; echo "hobby / movie ............. {$_POST['mov']} <br />"; ?>
그리고 join.php 파일을 실행하고 임의로 값을 입력한후 submit버튼을 눌러주세요.
그러면 아래와같이 결과가 출력됩니다. 이것이 post방식입니다.
그럼 또 공부하고 강좌를 올리겠습니다. !!!