0. 앞선 내용은 이전 글 참조
https://gyeombi.tistory.com/31
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 |