index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>로그인 페이지</title>
</head>
<body>
<h1>로그인 화면 구성하기</h1>
<form action="login_ok.php" method="POST">
아이디 : <input type="text" id="user_id" name="user_id" placeholder="아이디를 입력해 주세요." required autocomplete="off" autofocus>
비밀번호 : <input type="password" id="user_pw" name="user_pw" placeholder="비밀번호를 입력해 주세요." required>
<button>로그인</button>
</form>
</body>
</script>
</html>
login_ok.php
<?php
$id = $_POST["user_id"];
$pw = $_POST["user_pw"];
$space_pattern = "/\s{1,}/";
$kor_pattern = "/[가-힣]/";
$special_pattern = "/[`~!@#$%^&*,.|\\\'\";:\/?^=^+_()<>\[\]\{\}]/";
if(preg_match($space_pattern,$id)){
echo "<script>alert('공백이 존재하네요. 다시 입력해 주세요.!');
location.href='./index.php';
</script>";
}
if (preg_match($kor_pattern, $id)) {
echo "<script>
alert('한글은 입력 할 수 없습니다.');
location.href='./index.php';
</script>";
}
if (preg_match($special_pattern, $id)) {
echo "<script>
alert('특수문자가 포함되어 있습니다.');
location.href='./index.php';
</script>
";
}
if ($id == "admin" && $pw == "admin") {
echo "<script>
location.href='./admin_ok.php';
</script>";
}
echo "<h1>일반 계정으로 로그인 하셨습니다.</h1><br>";
echo $id . "님 어서오세요^^";
정규표현식 (Regular Expressions)
※ 여러 정규표현식이 있지만 위에 코드에서 사용된 간단한 정규표현식만 설명하겠습니다.
ex) preg_match(찾을 패턴, 찾을 문자열)
$special_pattern = "/[`~!@#$%^&*,.|\\\'\";:\/?^=^+_()<>\[\]\{\}]/"; //특수문자를 찾습니다. preg_match($special_pattern, $id); // 기존 문자열에서 특수문자(pattern)를 찾으면 1(true)을 반환.
논리 연산자 (Logical Operators)
※ 여러 논리연산자가 있지만 위에 코드에서 사용된 간단한 논리연산자만 설명하겠습니다.
ex) and연산자 (논리곱)
and==&&
둘은 정확히 같은 동작을 수행합니다.
-if 조건문을 사용하여 $id값과 $pw값이 모두 "admin"을 만족할 때 아래 코드를 실행 합니다.if ($id == "admin" && $pw == "admin") { echo "<script> location.href='./admin_ok.php'; </script>"; } if ($id == "admin" and $pw == "admin") { echo "<script> location.href='./admin_ok.php'; </script>"; }
location.href
if ($id == "admin" and $pw == "admin") { echo "<script> location.href='./admin_ok.php'; </script>"; }
1. 한글 정규식
$kor_pattern = "/[가-힣]/"; if (preg_match($kor_pattern, $id)) { echo "<script> alert('한글은 입력 할 수 없습니다.'); location.href='./index.php'; </script>"; }결과
로그인 후
2. 공백 정규식
$space_pattern = "/\s{1,}/"; if(preg_match($space_pattern,$id)){ echo "<script>alert('공백이 존재하네요. 다시 입력해 주세요.!'); location.href='./index.php'; </script>"; }결과
로그인 후
3. 특수문자 정규식
$special_pattern = "/[`~!@#$%^&*,.|\\\'\";:\/?^=^+_()<>\[\]\{\}]/"; if (preg_match($special_pattern, $id)) { echo "<script> alert('특수문자가 포함되어 있습니다.'); location.href='./index.php'; </script> "; }결과
로그인 후
4. 관리자 계정 로그인
관리자 로직
if ($id == "admin" && $pw == "admin") { echo "<script> location.href='./admin_ok.php'; </script>"; }관리자 계정 로그인 전
관리자 계정 로그인 후
5. 일반 계정 로그인
일반 계정 로직
echo "<h1>일반 계정으로 로그인 하셨습니다.</h1><br>"; echo $id . "님 어서오세요^^";일반 계정 로그인 전
일반 계정 로그인 후
전에 if문만 썼을 때는 상당히 신경이 많이 쓰였는데 정규표현식 덕분에 그동안 생각이 많았던 부분들을 많이 해소할 수 있어서 좋았습니다. 다음에는 쿠키와 세션을 가지고 로그인과 로그아웃 기능을 만들어 볼 생각입니다. 감사합니다.