PHP 3, 4일차

Fohanist·2020년 5월 1일
0

PHP

목록 보기
3/6
post-thumbnail

오늘은 보아하니 사용자와 상호작용하는 폼을 시작으로 공부를 시작한다~
한 시간씩 공부하니 짧아서 나눠서 작성한 다음 올린다.

사용자 상호작용과 폼

  • 링크를 이용한 변수 전달
    페이지를 요청 시 정보를 함께 전달하는 가장 간단한 방법은 URL를 활용하는 것이다.
    아래 작성된 코드들을 보며 설명을 이어나가자.
file: name.html
<a href="name.php?name=PHP">안녕! PHP</a>

페이지를 이동시키는 HTML 태그다. name.html에서 name.php로 이동한다.
그런데 name이라는 변수에 PHP라는 값을 넣어서 URL로 name.php에서 같이 넘겨준다.
즉, 안녕!PHP라는 링크를 누르게 되면 위에 설명한 대로 된다.

file: name.php
$name = $_GET['name'];
        echo $name.'은 너무 재미있어';

name.php에서 $_GET[]이라는 배열로 URL로 넘겨받은 name 변수 값을 다시 $name 변수에 넣었디. 그리고 echo를 통해 변수 값과 문자열을 출력하여 이전 페이지에서 넘겨받은 변수 값을 문자열과 함께 출력하게 되었다. 하지만 이렇게 작성하면 보안상 문제가 발생한다. 따라서 아래 처럼 작성하는 것이 중요하다.

file:name_2.html
<a href="name3.php?a=PHP&amp;b=MYSQL">안녕! PHP</a>

file:name_2.php
$a1 = $_GET['a'];
$b1 = $_GET['b'];
echo htmlspecialchars($a1, ENT_QUOTES, 'UTF-8').' '.htmlspecialchars($b1, ENT_QUOTES, 'UTF-8').'을 배워봅시다';

name_2.html처럼 &를 통해 변수를 구분하여 여러개를 URL로 넘겨줄 수 있다. 원래는 &이거 하나로 구분이 되지만, 일부 웹 브라우저가 알아서 변환을 시켜주지 않을 수도 있기 때문에 &로 적어주자. 그리고 두 번째 name_2.php에서 URL로 넘겨받은 a와 b를 a1과 b1 변수에 넣었다. 그리고 echo를 통해 변수.변수.을 배워봅시다 이렇게 출력한다. 여기서 htmlspecialchars()함수를 통해 URL로 넘겨받을 값을 그냥 문자처리하여 스크립트로 접근하는 것을 못하도록 방지한다. 즉, 보안을 신경 쓴 코드가 된 셈이다. 앞으로 GET방식으로 페이지를 만들 때는 위 함수를 잘 사용하도록 하자.

폼 변수 전달

file:login.html
	<form action="login.php" method="GET">
        <label for="ID">ID</label>
        <input type="text" name="id" id="id">
        <label for="PW">PW</label>
        <input type="text" name="PW" id="PW">
        <input type="submit" value="login">
    </form>

form이라는 태그를 이용해 변수를 전달할 수도 있다. action은 이동할 페이지를, method는 변수 전달 방식이다. GET과 POST가 있으며 URL로 전달하느냐 아니면 보이지 않게 숨겨서 전달하느냐이다. input 태그 안에 있는 name과 id를 통해 변수로 전달할 수 있다. submit을 통해 지정된 페이지로 이동하게 된다.

file: login.php
	$id = $_POST['ID'];
        $pw = $_POST['PW'];
        echo htmlspecialchars($id, ENT_QUOTES, 'UTF-8').' '.htmlspecialchars($pw, ENT_QUOTES, 'UTF-8').'를 입력하셨습니다';

POST방식으로 변수를 전달했다면 변수를 받는 것도 $_POST[]로 받아야 한다. POST방식을 사용하면 긴 문자, 보안에 유리한 조건으로 정보를 전달 할 수 있다는 장점이 있다. 그러나 단점도 있다. 페이지를 출력할 때 필요한 정보가 URL에 없기 때문에 결과페이지를 즐겨찾기에 추가 후 다시 들어오면 같은 페이지를 볼 수 없다. 따라서 검색엔진 같은 경우는 쿼리를 통해 변수를 전달한다.

GET과 POST는 어떨 때 사용할까?
GET은 서버 자원을 쓰지 않을 때 활용한다.
POST는 페이지가 삭제 및 수정이 될 때가 있을 때 활용한다.

profile
Support Full-Stack | JavaScript Developer

0개의 댓글