반응형
PHP GET POST 방식 한 페이지에서 처리하기
웹사이트에 방문한 사용자들에게서 데이터를 입력받아 전송받은 데이터를 GET, POST 방식을 하나의 PHP 파일에서 구분해 데이터를 처리할 수 있습니다.
예전에 전송받은 데이터를 GET으로 보낼지 POST로 보낼지 고민하며 한가지 방식으로만 처리하려고 했던 기억이 있는데 지금 생각해보니 생각이 짧았던 것 같기도 합니다. 하나의 페이지에서 폼전송이나 URL 전송 방식에 데이터를 구분해서 처리할 수 있으니 필요하신 분들은 참고하시면 좋을 것 같습니다.
이전에 작성당시엔 문제가 없었는데 POST 방식으로 전송 되었는지 여부를 확인하실때 제대로 작동이 안되신다면 $_SERVER['REQUEST_METHOD'] === 'POST' 구문을 이용해서 확인해 보시면 좋을 것 같습니다.
소스 client.php
단순 HTML 태그로 이루어져 있으며 URL 전송과 FORM 전송 버튼을 표시하는 소스코드입니다.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>GET방식 POST 방식 한페이지에서 처리하기</title>
</head>
<body>
<a href="server.php?name=아이유&age=30&gender=여자&birth=1993/05/16">GET 방식 전송</a>
<form action="server.php" method="post">
<input type="submit" value="POST 방식 전송" id="submit" name="submit" >
<input type="hidden" id="name" name="name" value="아이유">
<input type="hidden" id="age" name="age" value="30">
<input type="hidden" id="gender" name="gender" value="여자">
<input type="hidden" id="birth" name="birth" value="1993/05/16">
</form>
</body>
</html>
소스 server.php
소스 상 폼 이름에 따라 전송되었는지 여부만 if로 걸러내 처리하는 간단한 코드입니다.
<?php
header('Content-Type: text/html; charset=UTF-8');
/*
isset($_POST['submit']) 작동 안되는 경우가 있더군요.
대신에 $_SERVER['REQUEST_METHOD'] === 'POST'로 체크해 보셔도 됩니다.
*/
if(isset($_POST['submit'])){//작동이 안되면 $_SERVER['REQUEST_METHOD'] === 'POST' 변경해 보시길..
$name = $_POST['name'];
$age = $_POST['age'];
$gender = $_POST['gender'];
$birth = $_POST['birth'];
echo '<h2>POST 방식을 이용해 데이타가 웹서버로 넘어왔네요 </h2>';
echo '<p>이름 : '. $name . '<br>나이 : '. $age . '<br>성별 : ' . $gender. '<br>생일 : ' . $birth . '</p>';
}else{//get
$name = $_GET['name'];
$age = $_GET['age'];
$gender = $_GET['gender'];
$birth = $_GET['birth'];
echo '<h2>GET 방식을 이용해 데이타가 웹서버로 넘어왔네요 </h2>';
echo '<p>이름 : '. $name . '<br>나이 : '. $age . '<br>성별 : ' . $gender. '<br>생일 : ' . $birth . '</p>';
}
?>
결과 화면 (GET 방식)
결과 화면(POST 방식)
다양한 데이터 처리가 필요한 경우 GET, POST 방식을 같이 사용해 처리해 소스 파일을 나누지 않아도 되니 파일 관리도 좀 더 간편해 지는 것 같습니다.
반응형