본문으로 바로가기

게시판에 로그인, 회원가입 기능입니다. 


게시판에 필요한 기능은 아니지만 어디서나 사용되는 기본 기능이라서 한번 넣어봤습니다. 


앞에서 작성한 index.php의 부분을 조금 수정했습니다. 



index.php >>>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 <?php
                $connect = mysqli_connect('localhost''''''') or die ("connect fail");
                $query ="select * from board order by number desc";
                $result = $connect->query($query);
                $total = mysqli_num_rows($result);
 
                session_start();
 
                if(isset($_SESSION['userid'])) {
                        echo $_SESSION['userid'];?>님 안녕하세요
                        <br/>
        <?php
                }
                else {
        ?>              <button onclick="location.href='./login.php'">로그인</button>
                        <br />
        <?php   }
        ?>
 
cs


여기서는 세션을 이용해서 로그인 기능을 구현했습니다. 


기존의 코드에서 9줄 부터 19줄 까지 추가했습니다. 세션을 검사해서 로그인 상태를 확인하는 코드입니다. 


로그인이 되어있지 않다면 , 

로그인 버튼이 나타나고




로그인이 되어있다면,


해당 유저의 아이디와 로그아웃 버튼을 나타냅니다. 




1. 로그인 구현


로그인 폼은 간단하게 구현했습니다. 


코드 >>


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
 
<!DOCTYPE>
 
<html>
<head>
        <meta charset='utf-8'>
</head>
 
<body>
        <div align='center'>
        <span>로그인</span>
 
        <form method='get' action='login_action.php'>
                <p>ID: <input name="id" type="text"></p>
                <p>PW: <input name="pw" type="password"></p>
                <input type="submit" value="로그인">
        </form>
        <br />
        <button id="join" onclick="location.href='./join.php'">회원가입</button>
 
        </div>
 
 
</body>
 
</html>
cs



로그인 기능 >> 


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
<?php
 
        session_start();
 
        $connect = mysqli_connect("localhost"""""") or die("fail");
 
        //입력 받은 id와 password
        $id=$_GET['id'];
        $pw=$_GET['pw'];
 
        //아이디가 있는지 검사
        $query = "select * from member where id='$id'";
        $result = $connect->query($query);
 
 
        //아이디가 있다면 비밀번호 검사
        if(mysqli_num_rows($result)==1) {
 
                $row=mysqli_fetch_assoc($result);
 
                //비밀번호가 맞다면 세션 생성
                if($row['pw']==$pw){
                        $_SESSION['userid']=$id;
                        if(isset($_SESSION['userid'])){
                        ?>      <script>
                                        alert("로그인 되었습니다.");
                                        location.replace("./index.php");
                                </script>
<?php
                        }
                        else{
                                echo "session fail";
                        }
                }
 
                else {
        ?>              <script>
                                alert("아이디 혹은 비밀번호가 잘못되었습니다.");
                                history.back();
                        </script>
        <?php
                }
 
        }
 
                else{
?>              <script>
                        alert("아이디 혹은 비밀번호가 잘못되었습니다.");
                        history.back();
                </script>
<?php
        }
 
 
?>
 
cs




로그인에 성공하면 세션을 생성하고, 실패하면 로그인 페이지로 돌아갑니다. history.back()은 이전에 있었던 페이지로 이동하게 해줍니다. 



2. 회원가입 구현



회원가입도 간단하게 했습니다...


코드 >>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE>
 
<html>
<head>
        <meta charset='utf-8'>
</head>
<body>
 
        <div align="center">
                <p>회원가입</p>
                <form method='get' action='join_action.php'>
                        <p>ID: <input type="text" name="id"></p>
                        <p>PW: <input type="password" name="pw"></p>
                        <p>Email: <input type="email" name="email"></p>
                        <input type="submit" value="회원가입">
                </form>
        </div>
</body>
</html>
cs




회원가입 php >>


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
<?php
 
        $connect = mysqli_connect('localhost''''''') or die("fail");
 
 
        $id=$_GET[id];
        $pw=$_GET[pw];
        $email=$_GET[email];
 
        $date = date('Y-m-d H:i:s');
 
        //입력받은 데이터를 DB에 저장
        $query = "insert into member (id, pw, mail, date, permit) values ('$id', '$pw', '$email', '$date', 0)";
 
 
        $result = $connect->query($query);
 
        //저장이 됬다면 (result = true) 가입 완료
        if($result) {
        ?>      <script>
                alert('가입 되었습니다.');
                location.replace("./login.php");
                </script>
 
<?php   }
        else{
?>              <script>
                        
                        alert("fail");
                </script>
<?php   }
 
        mysqli_close($connect);
?>
 
cs


원래 id 중복검사 등등 해야하는데 중복이 없다하에 가정하고 구현했습니다 ... 중복 기능까지 원하시는 분들은 select 쿼리를 이용해서 하시면 될거 같아요.


(+ 추가) 중복 검사는 id 를 입력받은 후 select count(*) from member where id="받은 Id" 으로 구분할 수 있습니다. 




3. 로그아웃


로그아웃은 세션을 삭제하는 기능입니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
        session_start();
        $result = session_destroy();
 
        if($result) {
?>
        <script>
                alert("로그아웃 되었습니다.");
                history.back();
        </script>
<?php   }
?>
 
 
cs