GET 방식이란..?
get, post 방식에 대한 설명은 다른 블로그 등에 잘 나와있으므로 자세히 하지는 않겠다.
get 방식은 url을 통해 다른 페이지로 값을 전달하는 것을 말한다. get 방식으로 값을 전달할 경우 대상 페이지 url 맨뒤에 ?를 작성하고 키와 전달할 값을 넣는다. 여기서 키는 대상 페이지에서 전달된 값을 사용할 때 사용한다.
예) "https://dyp4r.php?id=admin"
위 예시 url은 dyp4r.php 페이지에 키 값은 'id'로 'admin'이라는 문자열 값을 전달하는 것이다. 해당 페이지에서는 키 값인 'id'로 'admin' 값을 사용할 수 있다.
만약 전달하고자 하는 값이 여러개라면 값들 사이를 &으로 구분지어서 전달할 수 있다.
예) "https://dyp4r.php?id=admin&pw=1234"
위 예시 url은 dyp4r.php 페이지에 여러 키와 값들을 전달하는데 이 키와 값들을 표로 정리하면 아래와 같다.
키 | 값 |
id | admin |
pw | 1234 |
이 글은 php에서 get 방식으로 넘어온 값들을 어떻게 사용할 수 있는지에 대해 다룰 것이다.
$_GET['<키 값>']
php에서는 $_GET을 사용해서 키에 해당하는 값을 가져올 수 있다.
<?php
$a = $_GET['id'];
$b = $_GET['pw'];
echo 'id = '.$a.'<br>';
echo 'pw = '.$b;
?>
위는 $_GET을 사용하는 간단한 예시 코드다. 2, 3행에서 id 키와 pw키에 해당하는 값을 변수 a, b에 저장하고 5, 6행에서 해당 값들을 출력한다.
실행해보면 id 키의 값인 admin, pw 키의 값인 1234가 잘 출력된 것을 볼 수 있다.
아래는 해당 개념을 배우면서 재미삼아 만들어본 간단한 로그인 페이지다. DB 연동까지 배운다면 DB에서 id, pw를 찾아서 검증할 수 있도록 만들어볼 계획이다.
<!-- test.php -->
<!DOCTYPE html>
<html>
<head>
<title>Document</title>
</head>
<body>
<form method="get" action="1.php">
id : <input name="id" type="text"><br>
pw : <input name="pw" type="text"><br>
<p><input type="submit" value="로그인"></p>
</form>
</body>
</html>
test.php 페이지에서는 input 태그를 통해 id, pw 값을 입력 받고 form 태그를 이용해 1.php로 input의 값들을 get 방식으로 전달한다.
<!-- 1.php -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<?php
$id = "admin";
$pw = "1234";
?>
</head>
<body>
<?php
$a = $_GET['id'];
$b = $_GET['pw'];
if($a === $id && $b === $pw)
{
echo '<h2>로그인 성공! :)</h2>';
}
else
{
echo '<h2>로그인 실패 :(</h2>';
}
?>
</body>
</html>
1.php에서는 넘어온 값이 각각 "admin", "1234"와 일치한지를 확인한다.
만약 둘다 일치한다면 성공 문자열을, 하나라도 다르다면 실패 문자열을 보여준다.
다른 언어에서 흔하게 쓰이는 비교 연산자 ==이 아닌 ===을 쓴 이유는, php에도 역시 ==이 존재하지만 ==에는 Magic hashes 같은 비교 취약점이 존재하기 때문에 보안을 공부하는 학생으로서 조금이나마(?) 안전한 코드를 작성하고자 ===을 사용했다. :)
input에 type="password"를 준다면 비밀번호를 입력할 때 값이 *로 보이게 할 수 있지만, 지금은 예제삼아 만든 것이기 때문에 직관적으로 볼 수 있도록 그냥 type="text"를 사용했다.
'Old (2021.01 ~ 2021.12) > Programming' 카테고리의 다른 글
[PHP] 배열, 연관배열(딕셔너리) (0) | 2021.09.21 |
---|---|
[PHP] 조건문 (if, else if, else) (0) | 2021.09.21 |
[PHP] php의 기본적인 문법 (0) | 2021.09.21 |
c언어 코딩도장 Unit 58 ~ Unit 59 (0) | 2021.04.11 |
c언어 코딩도장 Unit 56 ~ Unit 57 (0) | 2021.04.11 |