[PHP] 입출력의 form and http

Dev_Honey·2022년 10월 8일
0

PHP

목록 보기
7/11
post-thumbnail

데이터전송

1. 입력과 출력 그리고 Form

입력 Form

<html>
<body>
<?php
echo $_GET['id']."님 안녕하세요 !";
?>
</body>
</html>

결과
http://localhost:8080/lab/IO_form/22.php?id=test
라는 URL로 접근을하면 결과값은

이렇게 나오는데 url에서 id에 해당하는 parameter값이 test라서!

<html>
<body>
<?php
echo $_GET['id']."님 안녕하세요 !"."<br/>";
echo $_GET['id'].','.$_GET['password'];
?>
</body>
</html>

password값도 파라미터로 전달해서 받아보면
localhost/IO_form/22.php?id=test&password=12345

값을 전달하는 방법

'?'는 에플리케이션.php와 데이터를 구분해주는 구분자다.

그런데 이렇게 전달하면, 데이터 핸들링이 상당히 불편하기때문에 우리는 FORM을 통해서 값을 입력받고 입력받은 데이터를 전달한다.

FORM

<html>
<body>
    <form method="get" action="2.php">
        id :  <input type="text" name="id" />
        password :  <input type="password" name="password" />
        <input type="submit" />
    </form>
</body>
</html>


이러한 form인데, password 타입은 password로 숨겨지게 했다.
submit을 누르면,
url이 바뀌고 입력한 데이터를 전달하게 되는데,
http://localhost:8080/lab/IO_form/22.php?id=test01&password=qwer1234
이렇게 바뀌고, 22.php파일이 출력이된다.
form의 action 속성이 하는 역할 !! HTML의 form 내장 함수 !
어떤 url로 보낼 것인가를 action에 지정
어떤 방식으로 보낼 것인가를 method에 지정(여기서는 GET방식으로)

이렇게 상호작용하는 방식을 취하기위해서 우리는 Server Side Script인 PHP를 사용하게 되는 것이다.


2. HTTP

  • HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다
  • HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.

HTTP를 통해 전달되는 자료는 http:로 시작하는 URL(인터넷 주소)로 조회할 수 있다.

HTML & PHP

  • HTML 은 데이터를 전송하는 역할
  • PHP는 데이터를 수신하는 역할

GET

URL에 데이터정보를 포함하여 서버쪽으로 데이터를 전달하는 방식

<html>
<body>
<?php
echo $_GET['id']."님 안녕하세요 !"." "."<br/>";
echo "ID:".$_GET['id']  ."<br/>"."password:".$_GET['password'];
?>
</body>
</html>

결과
localhost/IO_form/22.php?id=test&password=12345

GET방식은 URL에 데이터가 담기는 것을 볼 수 있다.

POST

URL에 데이터정보를 포함하지 않고, 서버쪽으로 데이터를 전달

<html>
<body>
<?php
echo $_POST['id']."님 안녕하세요 !"." "."<br/>";
echo "ID:".$_POST['id']  ."<br/>"."password:".$_POST['password'];
?>
</body>
</html>

결과

POST방식은 URL의 변화가 없다. 데이터는 잘 받아온다.
그렇다면 로그인이나 이런 개인정보가 담기는 데이터를 서버에 보낼 때는, POST 방식이 맞다고 본다.(URL에 접근하는 보안적 측면에서)

위 두 가지 method의 차이점을 알겠는가?
서버측에도 데이터를 받을 때 _GET[]과 _POST[]를 요청하는 method와 일치를 시켜줘야한다는 것!
Browser에서 method="GET"이면 서버측에도 _GET[], method="POST"이면 서버측에도 _POST[] 이렇게 일치시켜줘야한다.
그렇게 하면 같은 입력 데이터를 서버에서 받을 수 있다.

생활코딩 수업처럼 Fiddler를 사용해서 HTTP를 확인해 볼 것이다.

10일 무료 사용가능!!


이렇게 Request/Response에 담기는 내용을 확인할 수 있다.

추가적으로 개발자 기본 소양으로
Network, TCP/IP에 대한 내용에 대해서는 공부해둬야한다.


참조

생활코딩 https://opentutorials.org/course/3018/5125 PHP
https://ko.wikipedia.org/wiki/HTTP 위키백과 HTTP

profile
자습서 같은 공부 블로그 만들기!

0개의 댓글