본문 바로가기

IT프로그래밍

PHP 변수 전달 / PHP 자료 넘기기 / HTML 자료 넘기기 / POST, GET 방식 차이 / PHP 기초, HTML 기초



PHP 변수 전달 !!

PHP페이지에서 다른 PHP페이지로 자료를 넘기는 방법은 2가지가 있습니다.

1. POST 방식

2. GET방식 


POST방식은 주소표시줄에 값이 노출되지 않고, GET방식은 주소표시줄에 값이 노출된다는 차이점이 있습니다.

간혹 주소가 노출되지 않는 POST값을 무조건 사용하라는 글이 있는데;;

그 쓰임새가 무엇이냐에 따라 나눠 쓰시면 됩니다.

만약 로그인 페이지와 같이 값이 노출되면 안되는 곳에서는 POST방식을 취하고, 일반 검색이나 게시판같은곳에서는 GET방식을 취하셔도 무방합니다. 프로그래밍을 하는 입장에서도 GET방식을 취하여 값을 가져와야 하는 경우가 생기기도 합니다.


PHP에서 POST방식과 GET 사용방법은 거의 같습니다.


test1.php

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

 

<html>

<title>TEST 1</title>

<body>

 

<form action="test2.php" method="post">      <!-- form태그 -->

<input type = text name = text_1>

<input type = text name = text_2>

<input type = "submit" value = "POST 제출하겠습니다">

</form>

 

<form action="test2.php" method="get">       <!-- form태그 -->

<input type = text name = text_1>

<input type = text name = text_2>

<input type = "submit" value = "GET으로 제출하겠습니다">

</form>

</body>

</html>


test2.php


<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

 

<?php

        echo "POST_1 : ";

        echo $_POST[text_1];

        echo "<br>";

        echo "POST_2 : ";

        echo $_POST[text_2];

        echo "<br>";

        echo "GET_1 : ";

        echo $_GET[text_1];

        echo "<br>";

        echo "GET_2 : ";

        echo $_GET[text_2];

?>


위의 소스는 test1.php안에 있는 HTML 값 text_1과 text_2라는 값을 text2.php에 가져와서 php의 echo를 통해 출려하는 소스입니다.

POST나 GET이나 방식을 동일합니다.

보내려는 페이지 에서

<form action="값을 보내려는 페이지 주소" method = "GET이나 POST"> 를 사용하시면 됩니다.

그리고 꼭 ! 

Submit 버튼을 만들어줘야 합니다.

<input type = submit>

이 버튼은 이 폼으로 값을 날리겠다 라는 것입니다.

그리고 꼭 전달하고자 하는 값은 form태그 안에 있어야 합니다.

위의 소스를 풀이하면 text_1, text_2라는 값을 POST 혹은 GET방식을 통해서 text2.php에 넘긴다는 것입니다.

text2.php에서는 php의 echo함수를 통해 그 값을 출력하는 것이구요.

결과를 보면



가장 상단 왼쪽을 기준으로 텍스트박스는

text_1 text_2

text_1 text_2

라는 name값을 가지고 있습니다.

그리고 그 name값을 통해 우리는 값을 불러올수 있는 거죠

다른 결과도 같이 보면서 설명하겠습니다.




위 처럼 결과가 나왔습니다.

주의하실 점이 꼭 form태그 안에 전달하고자 원하는 값을 넣으셔야 한다는 것입니다.

java에 빗대어 표현하자면 form태그안의 값들은 지역변수처럼 취급하기 때문에 이름이 같아도 

POST으로 호출되었느냐 GET으로 호출되었느냐에 따라서 출력되는 값이 다른것입니다.


또 위에서 주의 깊게 보셔야하는것이 주소표시줄입니다.

POST로 값을 불렀을 때는 test2.php에서 주소가 끝났지만,

GET으로 값을 불렀을 때는 text2.php?text_1=하지만....(그림이 짤려서 다 안나왔네요)

정확히 나왔다면 text2.php?text_1=하지만+GET값으로+보낼꺼야&text_2=어떻게+될까 이런식으로 나왔을 겁니다

GET값은 값을 노출시키기 때문이죠.

JSP같은 경우 GET으로 호출하면 한글은 16진수화 시키고, 공백은 + 로 표시됩니다.


POST / GET 변수 전달 정리

1. <form action = "값을 받을 페이지 주소" method = "POST 혹은 GET>

이 폼 페이지 사이에 전달하고자 하는 값이 들어가야 합니다.그렇지 않으면 전달되지 X

</form>


2. <input type = submit>을 통해 값을 제출해야 합니다.

버튼형식으로 표시되는데 버튼을 클릭하면 자동으로 위에 form action에 쓴 페이지로 이동하며, 값을 전달합니다.

value 값을 주지 앟으면 [제출]이라고 표시되며, 표시되는 값을 바꾸고 싶다면

<input type = submit value = "바꾸고 싶은 이름"> 처럼 value값으로 바꿀 수 있습니다.


3. POST방식은 주소에 값이 노출되지 않는다. GET방식은 값이 노출된다.


4. PHP변수는 넘길 수 없습니다.

예를 들어 PHP 내에

<?php

$number = 10;

?>

이라고 정의하고 폼태그 안에 기술하였다고 해도 이 값은 넘어가지 않습니다. 

이 값을 전달하고 싶다면

<input type = hidden value = <?php echo %number;?> name = my_number> 로 정의하시고

form태그로 전달 -> $_POST[my_number]로 받아 올수는 있습니다.

요점은 HTML안의 값만 가능하다는 것입니다.