목표 : DB연결되지 않은 간단한 로그인 페이지 만들기
내가 이해해본 PHP의 주요 원리는 다음과 같다.
1. 사용자가 컨텐츠 내용을 작성(.php)후 웹서버로 전달.
2. 웹서버가 .php 파일을 WAS(Web Application Server)에게 넘김.
3. WAS가 넘겨받은 .php 파일을 사용자 대신 자동으로 html로 만들어서 이를 다시 웹서버에 넘김.
4. 완료된 웹페이지가 띄워짐.
오늘은 기본 뼈대를 먼저 작성해보고 이해해보자.
우선 main.php와 mainLogin.php 두 개 파일을 생성했다.
그리고 main.php는 다음과 같이 작성했다.

위의 main.php 를 해석해보자.
사용자가 form 태그 안에 있는 input을 제출하면 이 정보를 받은 웹브라우저는,
1. action 속성이 가리키는 곳(mainLogin.php)을 열고,
2. mainLogin.php뒤에 ?(물음표)를 붙인 뒤,
3. input 태그에 입력된 정보, 특히 name이라고 하는(일종의 '미리 약속된') 속성의 값을 물음표 뒤에 붙여준다.
즉, 비밀번호를 '1111'이라고 입력하면 브라우저 주소창에는 다음과 같이 나타난다.
mainLogin.php?password=1111
이때 사용자가 웹서버에 전달하는 데이터를 '파라미터'라고 한다.
이제이렇게 받아든 파라미터, 즉 password값을 건네받을 mainLogin.php를 작성할 차례이다.
기본적인 php 문법은 다음과 같다.
<?php ~~~ ?> : php를 사용하기 위해서 처음과 끝을 이렇게 써야 한다.
$(달러) 표시 : php에서 사용하는 변수.
echo : 페이지에 글자를 출력하는 함수.
GET : 데이터를 입력받는 방식 중 한가지.
$_GET["password"] : 전달받은 파라미터(password)를 GET방식으로 가져오라는 약속된 표현.
예를 들어 만약 php 문서 안에
<?php
echo $_GET["password"];
?>
라고 쓴다면, 화면에는 전달받은 파라미터, 즉 password값을 페이지에 출력하게 된다.
따라서
<?php
$password = $_GET["password"];
?>
라고 쓴다면, $password 라는 변수에 이전 페이지에서 사용자로부터 전달받은 파라미터(password)를 GET방식으로 가져와 집어넣으라는 뜻이 된다.
이상의 것들을 활용해서 다음과 같이 if문을 작성하면 된다.

이제 id와 password 두 가지를 입력하는 코드를 써볼 차례다.
이에 앞서 form 태그의 두 가지 method에 대하여 알아보겠다.
method 속성은 속성값으로는 GET과 POST 두 가지 중 하나를 선택할 수 있습니다.
GET 방식은 URL에 폼 데이터를 추가하여 서버로 전달하는 방식입니다.
GET 방식의 HTTP 요청은 브라우저에 의해 캐시되어(cached) 저장됩니다.
또한, GET 방식은 보통 쿼리 문자열(query string)에 포함되어 전송되므로, 길이의 제한이 있습니다.
따라서 보안상 취약점이 존재하므로, 중요한 데이터는 POST 방식을 사용하여 요청하는 것이 좋습니다.
POST 방식은 폼 데이터를 별도로 첨부하여 서버로 전달하는 방식입니다.
POST 방식의 HTTP 요청은 브라우저에 의해 캐시되지 않으므로, 브라우저 히스토리에도 남지 않습니다.
또한, POST 방식의 HTTP 요청에 의한 데이터는 쿼리 문자열과는 별도로 전송됩니다.
따라서 데이터의 길이에 대한 제한도 없으며, GET 방식보다 보안성이 높습니다.
출처 : https://tcpschool.com/html-tag-attrs/form-method
만약 아이디와 패스워드가 url 에 표시된다면 보안상 취약해질 것이므로 POST를 활용하여 다음과 같이 간단하게 완성했다.
1. main.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="mainLogin.php" method="post">
<p>입력해주세요.</p>
<p>아이디 : <input type="text" name="username"></p>
<p>비밀번호 : <input type="text" name="password"></p>
<input type="submit" value="로그인">
</form>
</body>
</html>
2. mainLogin.php
<!DOCTYPE html>
<html>
<head>
<meta carset="utf-8">
</head>
<body>
<?php
$username = $_POST["username"];
$password = $_POST["password"];
if($username == "admin" && $password == "admin1234"){
echo "환영합니다.";
}else{
echo "등록되지 않은 사용자입니다.";
}
?>
</body>
</html>

잘 동작하는 것을 확인할 수 있었다.
'Learning Web > 2024~2025 Web Development' 카테고리의 다른 글
| 원격 DB (MySQL) 와 연결하기 (0) | 2025.02.02 |
|---|---|
| [KRATOS] #0 밑그림 작업 (2) | 2024.12.17 |
| 로그인 페이지 업그레이드 (2) | 2024.10.23 |
| UTM으로 SSH 접속하기 (2) | 2024.10.18 |
| Ubuntu server에서 화면 돌리기 (세로모드) (1) | 2024.10.15 |