happy cat image

everdevel

우리 모두의 웹 입문, 에버디벨

UI 변경

POST와 GET

앞에서 만들었던 PHP의 회원가입 페이지를 구동시키기 위해 POST와 GET이 무엇인지 알아봅시다.

POST

태그 내에서 사용된 각 컨트롤(입력상자들과 버튼)의 선택 사항을 action에 명시된 url로 전달하게 된다.
이때 입력상자나 버튼에 사용된 name 속성값을 변수명으로 하고 폼 양식에서 사용자가 입력한 내용이나 버튼에 사용된 value속성 값을 그 변수의 값으로 전달되며, 데이터의 길이에 제약이 없고 보안에 강하다.

GET

action에 명시된 URL의 주소 뒤에 ?를 붙이고 변수명과 값을 쌍으로 해서 원 하는 정보를 전달하게 되고, 변수가 여러 개일 경우에는 &로 구분된다. GET방식은 간단하게 변수를 통하여 원하는 값을 전달할 때 사용하며, 웹 브라우저의 주소 창에 전달되는 값이 노출되는 단점이 있어 보안 측면이 취약하다.
즉 여러분이 주소뒤에 봤을 법한 www.everdevel.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 앞에 &있죠?

결과는

php image

그럼 이번엔 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방식입니다.

php image

그럼 또 공부하고 강좌를 올리겠습니다. !!!

강좌로 돌아가기