반응형

1. Goal

  • 비밀번호 입력 시 길이에 따른 보안성 항목 추가

2. Using

  • HTML
  • Javascript

3. Source Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>젊은이여 그대의 이름을 가치있게 하라</title>
    </head>
    <script>
        function check_pw(){
 
            var pw = document.getElementById('pw').value;
            var SC = ["!","@","#","$","%"];
            var check_SC = 0;
 
            if(pw.length < 6 || pw.length>16){
                document.getElementById('pw_pro_label').innerHTML ='비밀번호는 6글자 이상, 16글자 이하만 이용 가능합니다.';
                document.getElementById('pw_pro').value='0';
                return;
            }
            for(var i=0;i<SC.length;i++){
                if(pw.indexOf(SC[i]) != -1){
                    check_SC = 1;
                }
            }
            if(check_SC == 0){
                document.getElementById('pw_pro_label').innerHTML = '비밀번호에 !,@,#,$,% 의 특수문자를 포함시켜야 합니다.'
                return;
            }
            document.getElementById('pw_pro_label').innerHTML = '';
            if(pw.length < 8){
                document.getElementById('pw_pro').value='1';
            }
            else if(pw.length<12){
                document.getElementById('pw_pro').value='2';
            }
            else{
                document.getElementById('pw_pro').value='3';
            }
            if(document.getElementById('pw').value !='' && document.getElementById('pw2').value!=''){
                if(document.getElementById('pw').value==document.getElementById('pw2').value){
                    document.getElementById('check').innerHTML='비밀번호가 일치합니다.'
                    document.getElementById('check').style.color='blue';
                }
                else{
                    document.getElementById('check').innerHTML='비밀번호가 일치하지 않습니다.';
                    document.getElementById('check').style.color='red';
                }
            }
        }
    </script>
    <style>
        td{padding:5px;}
    </style>
    <body>
        <table>
            <tr>
                <td width="5%" align="center">*</td>
                <td width="20%">아이디</td>
                <td><input type="text" name ="userId" id="id"></td>
            </tr>
            <tr >
                <td width="5%" align="center">*</td>
                <td width="20%">비밀번호</td>
                <td><input type="password" name="userPW" id="pw" onchange="check_pw()">&nbsp;<span style="color:cadetblue">보안성</span> <progress id="pw_pro" value="0" max="3"></progress>&nbsp;<span id="pw_pro_label"></span></td>
            </tr>
            <tr>
                <td width="5%" align="center">*</td>
                <td width="20%">비밀번호 확인</td>
                <td><input type="password" name="userPW2" id="pw2" onchange="check_pw()">&nbsp;<span id="check"></span></td>
            </tr>
        </table>
    </body>
</html>
cs

4. Explanation

1부와 소스코드가 비슷하니 추가된 부분만 간단하게 설명하도록 하겠다.

 

참고로 비밀번호 조건을 확인하는 부분의 조건문 내에 return 문을 추가해주었다고 한다. (가독성(?)을 위해...)

63
<td><input type="password" name="userPW" id="pw" onchange="check_pw()">&nbsp;<span style="color:cadetblue">보안성</span> <progress id="pw_pro" value="0" max="3"></progress>&nbsp;<span id="pw_pro_label"></span></td>
   

63번 라인에 <span style="color:cadetblut">보안성</span>은

보안성이라는 글자 + 스타일을 입히기 위해서 삽입해주었다.

 

<progress> 태그는 진행 정도를 아래와 같이 출력시키는 것이다.

<progress> 짜잔

봐줄만하다.(?)

 

<progress> 태그의 속성은

id, value, max가 있는데

max는 그려질 바(bar)에 대한 최대값

value는 현재 값이다.

위의 그림에서는 max = "3", value="2" 인 상태이기 때문에 약 66.6%의 영역이 색칠되어져 있다.

 

그럼 script문에서 이 value값만 컨트롤할수 있다면? (@_@)

아참 pw_pro_label은 bar에 대한 간단한 설명을 넣기 위한 id였는데! 사용하지 않았으므로 무시해주길 바란다.

 

script문은 정말쉽다. 추가된 부분은 아래와 같다.

추가된 부분

 

일단 비밀번호에 대한 조건이 충족되지 않으면 pw_pro의 value값을 0으로 설정한다.

그럼 당연히 bar는 빈상태가 될것이다.

 

비밀번호에 대한 조건을 충족시킨 상태에서 비밀번호의 길이가 6~7자 사이일 시 value에 1을

8~11자 사이일 시 2를

12~16자 사이일 시 3을 입력해줌으로 써 <progress> 태그를 컨트롤 하였다.

 (@_@)!

5. Result

보안성 2단계

6. Feelings

HTML을 배우면서 갑자기 뜬금! 궁금한게 생기곤 했는데 그중 하나가 이 부분이었다.

공부를 하고 나니 생각보다 구현하기 쉬웠다.

 

(@_@)

반응형

+ Recent posts