C-log

⚡PHP로 URL의 id값 가져오기 : GET/POST 본문

Server/⚡ver0

⚡PHP로 URL의 id값 가져오기 : GET/POST

4:Bee 2023. 10. 18. 19:08
728x90

php를 통해서 URL의 id값을 가져오는 것을 연습해보자.

-URL id값 가져오기

우선 xampp을 통해서 php를 활성화 시켜주고 해당 localhost로 이동해서 php파일을 연결 시켜보고 "contact_php"를 웹브라우저로 띄워보자. 코드는 매우 간단하다.

<?php
echo "contact_php";

이 코드로 우리는 현재 잘 연결이 되어 있다는 것을 알 수 있다. 이제는 a태그로 링크를 생성하고 해당 링크로 넘어가게 구성을 만들어 보자. 그리고 직접 a태그 href에 id값을 집어 넣어보자.

contact_URL.php

<!-- PHP_zone -->
<?php
echo "contact_php";
?>

<!-- HTML_zone -->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Try to GET ID!</title>
</head>

<body>
  <ul>
    <li>
      <a href="./Link/Link_A.php?id=Link_A">A</a>
    </li>
    <li>
      <a href="./Link/Link_B.php?id=Link_B">B</a>
    </li>
  </ul>
</body>

</html>

이렇게 우리는 id값을 집어 넣고 해당 링크로 넘어 가면 id 값이 무엇인지 보여주는 코드를 각 A,B 페이지에 구성해보자.

A코드

더보기

Link_A.php

<!-- PHP_zone -->
<?php
echo "HERE IS Link_A page!!<br>BUT DON'T HAVE DATA";
$id = $_GET['id'];
?>

<!-- HTML_zone -->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <h1>ID is "<?= $id ?>"</h1>
  <a href="../contact_URL.php">BACK</a>
</body>

</html>

B코드

더보기

Link_B.php

<!-- PHP_zone -->
<?php
echo "HERE IS Link_B page!!<br>BUT DON'T HAVE DATA";
$id = $_GET["id"];
?>

<!-- HTML_zone -->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <h1>ID is "<?= $id ?>"</h1>
  <a href="../contact_URL.php">BACK</a>
</body>

</html>

구성은 간단하다. 웹브라우저에 현재 URL이 가지고 있는 id값이 무엇인지 표기 하기위해서는 php에 $를 사용해서 $id변수를 선언한다. 이후 해당 변수를 HTML로 가져와 h1태그로 웹브라우저에 어떤 id값을 가지고 있는지 보여주는 것이다. php의 변수를 HTML에 사용하려면 <?= ?>라고 적고 해당 괄호 안에 사용할 변수를 적으면 된다.

현재 우리가 id값을 contact_URL.php에서 a태그 href안에 직접 기입을 했지만 이후에는 php문법을 이용해서 응용 할 것이다.

이제 각 페이지에 form태그를 이용해서 input태그로 값을 입력하고 전달 받는 과정을 살펴보자. 


-GET과 POST의 차이

 

-$_GET['id']

Link_A.php의 HMTL h1태그 아래에 아래 코드를 삽입하자.

  <h3>GET value</h3>
  <hr>
  <form action="get_value.php" method="GET">
    <input type="text" name="id" placeholder="value">
    <input type="submit" value="submit">
  </form>

  <a href="../contact_URL.php">BACK</a>

form태그를 사용했다. 이제 속성을 봐야한다. action이라는 속성은 해당 form 데이터를 서버로 보낼 때 해당 데이터가 도착할 URL을 명시하는데 여기서 form태그 속 데이터는 input태그의 값(value:속성)이며 해당 값을 명시하기 위해서는 name속성을 사용해야한다. name태그를 사용하지 않으면 오류가 반드시 나기 때문에 name을 꼭 적어야한다.  get_value.php 코드는 다음과 같다.

get_value.php

<?php
echo "Did it!!";
$id = $_GET['id'];
?>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>get_value</title>
</head>

<body>
  <h1>HERE IS GET_ZONE! "<?= $id ?>"</h1>
</body>

</html>

-$_POST['id']

우리가 위에서 삽입한 코드 바로 아래에 아래 코드를 삽입하자.

<?php
echo "Did it!!";
$id = $_POST['id'];
?>
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>get_value</title>
</head>

<body>
  <h1>HERE IS POST_ZONE! "<?= $id ?>"</h1>
</body>

</html>

POST는 GET과 코드는 유사해 보이지만 form의 데이터처리 결과가 다르다. POST는 사용자 인터페이스인 웹브라우저 URL에 표기 되지가 않는다. 물론 의도적으로 POST된 데이터의 값을 echo나 HTML코드를 통해서 $_POST값을 대입하면 아래 이미지 처럼 보여줄 수는 있다. 원래 POST의 용도는 전달 된 데이터가 밖으로 유실되지 않고 은밀하게 전달되기 위함이라는 것을 알아두자.

왼쪽 GET은 URL에 id값이 표기 된다. 하지만 POST는 웹브라우저에 표기된 것외에는 보여지지 않는다.


우리가 Link_A와 B를 제작했다. A에는 오로지 POST와 GET만을 다루는 페이지로 구성하고 Link_B는 비워둘 것이다. 우리는 Link_A에 GET과 POST를 입력하는 란이 있다. 하지만 이것을 버튼을 눌렀을 때 GET 페이지와 POST 페이지로 바뀌는 방식으로 만들어 보려고 한다. 페이지로 이동하는 것이기 때문에 크게 어려움은 없다. 아래 코드를 기본 Link_A.php의 body태그에 삽입하자.

<h1>ID is "<?= $id ?>"</h1>

  <h2>Select type</h2>
  <a href="Link_get.php?id=get_type">GET</a>
  <a href="Link_post.php?id=post_type">POST</a>
  <br><br>
  <a href="../contact_URL.php">BACK</a>

이후 해당 Link_get.php와 Link_post.php파일을 생성하자. 두 코드는 아래와 같다.

Link_get.php

<!-- PHP_zone -->
<?php
echo "HERE IS Link_A page!!<br>BUT DON'T HAVE DATA";
$id = $_GET['id'];

?>

<!-- HTML_zone -->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Link_A</title>
</head>

<body>
  <h1>"<?= $id ?>"</h1>

  <h2>Select type</h2>
  <a href="Link_get.php?id=get_type">GET</a>
  <a href="Link_post.php?id=post_type">POST</a>

  <h3>GET value</h3>
  <hr>
  <form action="get_value.php" method="GET">
    <input type="text" name="id" placeholder="value">
    <input type="submit" value="submit">
  </form>

  <a href="./Link_A.php?id=Link_A">BACK</a>
</body>

</html>

Link_post.php

<!-- PHP_zone -->
<?php
echo "HERE IS Link_A page!!<br>BUT DON'T HAVE DATA";
$id = $_GET['id'];

?>

<!-- HTML_zone -->
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Link_A</title>
</head>

<body>
  <h1>"<?= $id ?>"</h1>

  <h2>Select type</h2>
  <a href="Link_get.php?id=get_type">GET</a>
  <a href="Link_post.php?id=post_type">POST</a>

  <h3>POST value</h3>
  <hr>
  <form action="post_value.php" method="POST">
    <input type="text" name="id" placeholder="value">
    <input type="submit" value="submit">
  </form>

  <a href="./Link_A.php?id=Link_A">BACK</a>
</body>

</html>

크게 어려움은 없었다. 다만 Link_A.php의 body태그의 a태그를 눌렀을 때 id값이 GET이 되고 POST가 되는 어떤 방법이 있지 않을까 하고 생각해본다.

여기까지 간단하게 php를 사용해 보았다. 다음은 MySQL과의 연동으로 각 페이지마다 데이터를 주고 받아 볼 것이다.

728x90

'Server > ⚡ver0' 카테고리의 다른 글

⚡PHP API : 날짜 그리고 나의 위치  (0) 2023.10.30
⚡PHP select_id : JS&PHP&MySQL  (0) 2023.10.23
⚡PHP select_id : DATABASE  (0) 2023.10.22
⚡PHP change_id : Ajax  (0) 2023.10.21
⚡PHP change_id  (0) 2023.10.21
Comments