Programming/PHP

PHP GET POST 방식 한 페이지에서 처리하기

zzarungna 2021. 6. 7. 21:43
반응형

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 방식을 같이 사용해 처리해 소스 파일을 나누지 않아도 되니 파일 관리도 좀 더 간편해 지는 것 같습니다.

반응형