클라이언트가 서버에 HTTP 요청 시 POST, GET 둘 중 하나를 사용하게 됩니다.
GET의 경우 URL로 정보가 전송되며, POST의 경우 HTTP의 BODY로 정보가 전송됩니다.
GET은 $_GET으로 접근할 수 있으며 POST는 $_POST로 접근할 수 있습니다.
1. POST로 데이터 전달
POST방식으로 전송된 데이터는 $_POST 배열 변수에 저장됩니다.
php는 $_REQUEST라는 배열 변수가 존재합니다.
이 변수를 사용하면 POST, GET 방식으로 전송된 데이터를 구분하지 않고 받을 수 있습니다.
POST방식은 HTML의 <form> 태그와 함께 사용해야 합니다.
form을 만들고 input 박스에서 데이터를 입력하여 post로 데이터를 전달받는 방식을 코드로 확인해보겠습니다.
# post.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>POST</title>
</head>
<body>
<h1>POST Example</h1>
<form action="./post_result.php" method="post">
Name : <input type="text" name="name"><br/>
ID : <input type="text" name="id"><br/>
Email : <input type="text" name="email"><br/>
<input type="submit" value="전송">
</form>
</body>
</html>
<?php
$name = $_POST["name"];
$id = $_POST["id"];
$email = $_POST["email"];
?>
<html>
<head>
<title>Post Result</title>
</head>
<body>
<h1>Post Example</h1>
<?php
echo $name."님의 ID는 ".$id.", E-mail 주소는 ".$email."입니다.";
?>
</body>
</html>
post.php 파일에서 html로 폼을 만들고, submit 전송을 누르면 post_result.php 파일에 post method로 전송됩니다.
post_result.php 파일은 $_POST로 전달받은 배열 데이터를 name, id, email 변수에 각각 담고 echo로 출력합니다.
GET방식과 POST의 URL을 보면 알 수 있듯, POST방식으로 보내진 데이터들은 URL에 나타나지 않습니다.
로그인과 같이 보안이 중요한 부분에는 POST 방식을 사용합니다.
하지만 변수들이 URL에 나타나지 않기 때문에 그 페이지를 즐겨찾기 하거나 북마크 하는 것은 불가능 합니다.
2. GET 방식으로 데이터 전달
$_GET 배열 변수는 HTTP GET 방식으로 전송된 태그의 name 속성과 value 속성의 값이 변수들의 배열이 됩니다.
GET 방식으로 전송된 정보는 웹의 URL을 통해서 모든 사용자들이 볼 수 있습니다.
# get.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GET</title>
</head>
<body>
<h1>GET Example</h1>
<form action="./get_result.php" method="get">
Name : <input type="text" name="name"><br/>
ID : <input type="text" name="id"><br/>
Email : <input type="text" name="email"><br/>
<input type="submit" value="전송">
</form>
</body>
</html>
# get_result.php
<?php
$name = $_GET["name"];
$id = $_GET["id"];
$email = $_GET["email"];
?>
<html>
<head>
<title>Post Result</title>
</head>
<body>
<h1>Get Example</h1>
<?php
echo $name."님의 ID는 ".$id.", E-mail 주소는 ".$email."입니다.";
?>
</body>
</html>
전송버튼을 누른 후 결과를 보면 URL에 입력한 데이터들이 표시되어 브라우저에서 확인 가능한 것을 알 수 있습니다.
URL에 전달하는 데이터의 키와 값이 나타나기 때문에 보안상 취약점이 존재하므로, 중요데이터는 POST방식을 이용해서 요청하는 것이 좋습니다.
위에서는 Form 태그를 사용해서 데이터를 전송하였고, 이번엔 form 태그 없이 데이터를 전송해보겠습니다.
# get1.php
<?php
$name = 'sjh';
$id = 'test';
$email = 'test@test.com';
?>
<html>
<head>
<title>Get Result</title>
</head>
<body>
<h1>Get Example</h1>
<a href="./get_result.php?name=<?php echo $name; ?>&id=<?php echo $id; ?>&email=<?php echo $email; ?>">전송</a>
</body>
</html>
여러개의 값을 사용하고 싶을 땐 앰퍼샌드 기호를 추가하여 연결하여 사용하면 됩니다.
'php' 카테고리의 다른 글
[HTML Form을 통한 데이터 전송] select 태그 (0) | 2021.08.29 |
---|---|
[HTML Form을 통한 데이터 전송] input 태그 (1) | 2021.08.28 |
[php 내장함수] 네트워크 관련 함수 (0) | 2021.08.26 |
[php 내장함수] 파일 관련 함수 (0) | 2021.08.25 |
[php 내장함수] 배열 관련 함수 (0) | 2021.08.24 |