본문 바로가기
Study/Database

3. mysql과 node.js를 연결한 로그인/회원가입 예제

by 겸 2020. 12. 6.

0. 앞선 내용은 이전 글 참조

 

https://gyeombi.tistory.com/31

 

2. mysql 사용자 추가 및 DB 사용

서버 및 클라이언트 접속 gyeombi.tistory.com/30 소프트웨어 다운로드 3. Database -> MySQL 4. 아래쪽의 MySQL Community (GPL) Downloads 클릭 5. MySQL Community Server -> windows운영체제 -> Zip A.." data..

gyeombi.tistory.com

 

1. 클라이언트에 접속해서 로그인을 위한 DB를 생성해보자

 

클라이언트 접속 후

>show databases;

>use web;

>show tables;

 

테이블 없을 시 테이블 생성

CREATE TABLE IF NOT EXISTS user (
  id int(12) NOT NULL,
  username varchar(50) NOT NULL,
  password varchar(255) NOT NULL,
  email varchar(100) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 

user table의 id열의 type이 int이고 primary key로 설정하고, 자동으로 번호가 올라게, null이 아니도록 수정한다는 의미

alter table user modify id int not null auto_increment primary key;

 

>desc user;로 테이블 구조 확인 가능

 

참고) 테이블에 직접 사용자 데이터 넣기

1
2
INSERT INTO user (id, username, password, email) VALUES (1'test''test''test@test.com');
INSERT INTO user (username, password, email) VALUES ('test2''test2''test2@test.com');
cs

 

>select * from user; 테이블의 내용 확인가능

 

2. HTML와 CSS로 로그인 양식을 만든다

 

3. NODE.JS로 회원가입, 로그인, 로그아웃을 구현한 예제 코드이다

connection.query으로 쿼리문을 입력하여 HTML페이지에 결과를 출력할 수 있다.

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
///////////// 로그인
app.post('/login'function(request, response) {
    var username = request.body.username;
    var password = request.body.password;
    if (username && password) {
        connection.query('SELECT * FROM user WHERE username = ? AND password = ?', [username, password], function(error, results, fields) {
            if (error) throw error;
            if (results.length > 0) {
                request.session.loggedin = true;
                request.session.username = username;
                response.redirect('/');
                response.end();
            } else {              
                response.send('<script type="text/javascript">alert("로그인 정보가 일치하지 않습니다."); document.location.href="/login";</script>');    
            }            
        });
    } else {        
        response.send('<script type="text/javascript">alert("username과 password를 입력하세요!"); document.location.href="/login";</script>');    
        response.end();
    }
});
 
 
///////////// 로그아웃
app.get('/logout'function(request, response) {
    request.session.loggedin = false;
    response.send('<script type="text/javascript">alert("성공적으로 로그아웃 되었습니다."); document.location.href="/";</script>');    
    response.end();
  });
  
 
 
/////////////// 회원가입
app.get('/register'function(request, response) {
    response.sendFile(path.join(__dirname + '/public/register.html'));
});
 
app.post('/register'function(request, response) {
    var username = request.body.username;
    var password = request.body.password;
    var password2 = request.body.password2;
    var email = request.body.email;
    console.log(username, password, email);
    if (username && password && email) {
        connection.query('SELECT * FROM user WHERE username = ? AND password = ? AND email = ?', [username, password, email], function(error, results, fields) {
            if (error) throw error;
            if (results.length <= 0 && password==password2) {
                connection.query('INSERT INTO user (username, password, email) VALUES(?,?,?)', [username, password, email],
                function (error, data) {
                    if (error)
                    console.log(error);
                    else
                    console.log(data);
                });
                  response.send('<script type="text/javascript">alert("회원가입을 환영합니다!"); document.location.href="/";</script>');    
            } else if(password!=password2){                
                response.send('<script type="text/javascript">alert("입력된 비밀번호가 서로 다릅니다."); document.location.href="/register";</script>');    
            }
            else {
                response.send('<script type="text/javascript">alert("이미 존재하는 아이디 입니다."); document.location.href="/register";</script>');    
            }            
            response.end();
        });
    } else {
        response.send('<script type="text/javascript">alert("모든 정보를 입력하세요"); document.location.href="/register";</script>');    
        response.end();
    }
});
 
cs

 

반응형

'Study > Database' 카테고리의 다른 글

MySQL 총정리  (0) 2020.12.30
2. mysql 사용자 추가 및 DB 사용  (0) 2020.12.06
1. mysql 서버 구축  (0) 2020.12.05