Showing
18 changed files
with
61 additions
and
21 deletions
assets/img/1637811003566__titleData.txt
0 → 100644
This diff could not be displayed because it is too large.
assets/img/1637811317443__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637811397226__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637811451785__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637811867223__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637811938917__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637812900298__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637813650214__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637813866064__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637814184588__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637814388184__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637814418953__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
assets/img/1637814470972__아이즈원 김채원.jpeg
0 → 100644
49.1 KB
... | @@ -61,17 +61,16 @@ create table board( | ... | @@ -61,17 +61,16 @@ create table board( |
61 | >UPDATE board SET idx = @COUNT:=@COUNT+1; | 61 | >UPDATE board SET idx = @COUNT:=@COUNT+1; |
62 | 62 | ||
63 | --- | 63 | --- |
64 | -### 최종 수정: 2021-11-24 04:54<br> | 64 | +### 최종 수정: 2021-11-25 14:00<br> |
65 | ### 수정 내용: | 65 | ### 수정 내용: |
66 | -0. 채팅기능에 버그가 있는 것 같음-피드백 바람(undefined님이 나가셨습니다. -> 콘솔에 계속 출력됨) // socket.io의 express-session 호환 문제로 후순위 개발로 미룸 | ||
67 | -1. 로그에 IP 추가 | ||
68 | -2. 로그에 시간 추가 | ||
69 | -3. 시간 실시간 반영 | ||
70 | -4. 게시글 수정 및 삭제 세션+권한 연동/DB수정 | ||
71 | -5. 버그 수정 | ||
72 | -6. 게시글 조회수 구현 | ||
73 | -7. 프로필 수정 세션 연동 | ||
74 | -8. 프로필 사진 추가 | ||
75 | -9. 프로필 검색 추가 | ||
76 | -10. 프로필 비주얼 업데이트 | ||
77 | -11. etc | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
66 | +0. 채팅기능에 버그가 있는 것 같음(undefined님이 나가셨습니다. -> 콘솔에 계속 출력됨) // socket.io의 express-session 호환 문제로 후순위 개발로 미룸 | ||
67 | +1. 로그에 시간/IP 추가 | ||
68 | +2. 시간 실시간 반영 | ||
69 | +3. 게시글 수정 및 삭제 세션+권한 연동/DB수정 | ||
70 | +4. 버그 수정 | ||
71 | +5. 게시글 조회수 구현 | ||
72 | +6. 프로필 수정 세션 연동 | ||
73 | +7. 프로필 사진 추가 | ||
74 | +8. 프로필 검색 추가 | ||
75 | +9. 프로필 비주얼 업데이트 | ||
76 | +10. 코드 다듬음 | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -73,22 +73,25 @@ router.get('/', function(req, res){ | ... | @@ -73,22 +73,25 @@ router.get('/', function(req, res){ |
73 | }else{ | 73 | }else{ |
74 | var profilepic = "../assets/img/noneprofilepic.png"; | 74 | var profilepic = "../assets/img/noneprofilepic.png"; |
75 | } | 75 | } |
76 | - console.log(profilepic) | ||
77 | console.log(logString+req.user.ID+'('+nickname+') 유저가 프로필을 보고있습니다.('+ip+')') | 76 | console.log(logString+req.user.ID+'('+nickname+') 유저가 프로필을 보고있습니다.('+ip+')') |
78 | res.render('profile.ejs', {'ID':id, 'nickname':nickname, 'profnickname': nickname, 'type': type, 'profilemsg': profilemsg, 'profilepic':profilepic}) | 77 | res.render('profile.ejs', {'ID':id, 'nickname':nickname, 'profnickname': nickname, 'type': type, 'profilemsg': profilemsg, 'profilepic':profilepic}) |
79 | }) | 78 | }) |
80 | } | 79 | } |
81 | catch{ | 80 | catch{ |
81 | + if(!id){ | ||
82 | console.log(logString+'익명 유저의 프로필 접근 시도를 거부했습니다.('+ip+')') | 82 | console.log(logString+'익명 유저의 프로필 접근 시도를 거부했습니다.('+ip+')') |
83 | res.sendFile(path.join(__dirname, "../../public/login.html")) | 83 | res.sendFile(path.join(__dirname, "../../public/login.html")) |
84 | } | 84 | } |
85 | + } | ||
85 | 86 | ||
86 | }); | 87 | }); |
87 | 88 | ||
88 | router.post('/', function(req,res){ | 89 | router.post('/', function(req,res){ |
90 | + var ip = requestIp.getClientIp(req); | ||
91 | + try{ | ||
92 | + var id = req.user.ID; | ||
89 | var searNick; | 93 | var searNick; |
90 | searNick = req.body.search; | 94 | searNick = req.body.search; |
91 | - var ip = requestIp.getClientIp(req); | ||
92 | 95 | ||
93 | var sql = 'select * from userdb where nickname="'+req.body.search+'"'; | 96 | var sql = 'select * from userdb where nickname="'+req.body.search+'"'; |
94 | 97 | ||
... | @@ -117,9 +120,17 @@ router.post('/', function(req,res){ | ... | @@ -117,9 +120,17 @@ router.post('/', function(req,res){ |
117 | var profilemsg = req.body.profilemsg | 120 | var profilemsg = req.body.profilemsg |
118 | var profilepic = req.body.profilepic | 121 | var profilepic = req.body.profilepic |
119 | 122 | ||
123 | + console.log(logString+req.user.ID+'('+nickname+') 유저가 프로필 검색에 실패했습니다.(시도 닉네임: req.body.search // '+ip+')') | ||
120 | res.render('other_profile.ejs', {'ID':id, 'nickname': nickname, 'profnickname': profnickname, 'type': type, 'profilemsg': profilemsg, 'message':'해당 유저를 찾을 수 없습니다', 'profilepic':profilepic}) | 124 | res.render('other_profile.ejs', {'ID':id, 'nickname': nickname, 'profnickname': profnickname, 'type': type, 'profilemsg': profilemsg, 'message':'해당 유저를 찾을 수 없습니다', 'profilepic':profilepic}) |
121 | } | 125 | } |
122 | }) | 126 | }) |
127 | + } | ||
128 | + catch{ | ||
129 | + if(!id){ | ||
130 | + console.log(logString+'익명 유저의 프로필 검색 시도를 거부했습니다.('+ip+')') | ||
131 | + res.sendFile(path.join(__dirname, "../../public/login.html")) | ||
132 | + } | ||
133 | + } | ||
123 | }) | 134 | }) |
124 | 135 | ||
125 | router.get('/update', function(req,res){ | 136 | router.get('/update', function(req,res){ |
... | @@ -153,6 +164,7 @@ router.get('/update', function(req,res){ | ... | @@ -153,6 +164,7 @@ router.get('/update', function(req,res){ |
153 | 164 | ||
154 | router.post('/update', function(req,res,next){ | 165 | router.post('/update', function(req,res,next){ |
155 | var ip = requestIp.getClientIp(req); | 166 | var ip = requestIp.getClientIp(req); |
167 | + try{ | ||
156 | var id = req.user.ID; | 168 | var id = req.user.ID; |
157 | var profilemsg = req.body.profilemsg; | 169 | var profilemsg = req.body.profilemsg; |
158 | var nickname = req.body.nickname; | 170 | var nickname = req.body.nickname; |
... | @@ -199,25 +211,55 @@ router.post('/update', function(req,res,next){ | ... | @@ -199,25 +211,55 @@ router.post('/update', function(req,res,next){ |
199 | res.render('profmsgedit.ejs', {nickname: req.session.passport.user.nickname, profilemsg: oldProfilemsg, message : '중복된 닉네임입니다.'}) | 211 | res.render('profmsgedit.ejs', {nickname: req.session.passport.user.nickname, profilemsg: oldProfilemsg, message : '중복된 닉네임입니다.'}) |
200 | } | 212 | } |
201 | }) | 213 | }) |
214 | + } | ||
215 | + catch{ | ||
216 | + if(!id){ | ||
217 | + console.log(logString+'익명 유저의 프로필 수정 시도를 거부했습니다.('+ip+')') | ||
218 | + res.sendFile(path.join(__dirname, "../../public/login.html")) | ||
219 | + } | ||
220 | + } | ||
202 | }) | 221 | }) |
203 | 222 | ||
204 | router.get('/upload', function(req,res){ | 223 | router.get('/upload', function(req,res){ |
205 | - res.render('uploadprof.ejs') | 224 | + var ip = requestIp.getClientIp(req); |
225 | + try{ | ||
226 | + var id = req.user.ID; | ||
227 | + if(id) res.render('uploadprof.ejs') | ||
228 | + } | ||
229 | + catch{ | ||
230 | + if(!id){ | ||
231 | + console.log(logString+'익명 유저의 프로필 사진 업로드 접근 시도를 거부했습니다.('+ip+')') | ||
232 | + res.send("<script>alert('로그인이 필요합니다.');opener.location.href='/login';window.close();</script>"); | ||
233 | + } | ||
234 | + } | ||
206 | }) | 235 | }) |
207 | 236 | ||
208 | router.post('/upload', upload.single('userfile'), function(req,res){ | 237 | router.post('/upload', upload.single('userfile'), function(req,res){ |
238 | + var ip = requestIp.getClientIp(req); | ||
239 | + try{ | ||
209 | var id = req.user.ID; | 240 | var id = req.user.ID; |
210 | var ip = requestIp.getClientIp(req); | 241 | var ip = requestIp.getClientIp(req); |
211 | var profilepic = req.file.filename; | 242 | var profilepic = req.file.filename; |
212 | - console.log(profilepic) | ||
213 | var datas = [profilepic, id] | 243 | var datas = [profilepic, id] |
214 | 244 | ||
245 | + var picName = profilepic.substr(15) | ||
215 | var sql = "update userdb set profilepic =? where id =?" | 246 | var sql = "update userdb set profilepic =? where id =?" |
216 | myinfo.query(sql,datas,function(err,result){ | 247 | myinfo.query(sql,datas,function(err,result){ |
217 | if(err) console.error(err) | 248 | if(err) console.error(err) |
218 | - console.log(logString+req.user.ID+'('+req.user.nickname+') 유저가 프로필 사진을 업로드했습니다.('+ip+')') | 249 | + console.log(logString+req.user.ID+'('+req.user.nickname+') 유저가 프로필 사진을 업로드했습니다.(파일명: '+picName+' // '+ip+')') |
219 | - res.send('업로드 성공!: '+req.file); | 250 | + res.send("<script>alert('업로드가 완료되었습니다.');window.close();</script>"); |
220 | }) | 251 | }) |
252 | + } | ||
253 | + catch{ | ||
254 | + if(!id){ | ||
255 | + console.log(logString+'익명 유저의 프로필 사진 업로드 시도를 거부했습니다.('+ip+')') | ||
256 | + res.sendFile(path.join(__dirname, "../../public/login.html")) | ||
257 | + } | ||
258 | + else{ | ||
259 | + console.log(logString+req.user.ID+'('+req.user.nickname+') 유저가 파일 업로드 없이 업로드를 시도했습니다.('+ip+')') | ||
260 | + res.send("<script>alert('파일을 업로드 해주세요.');history.back();</script>"); | ||
261 | + } | ||
262 | + } | ||
221 | }) | 263 | }) |
222 | 264 | ||
223 | 265 | ||
... | @@ -230,7 +272,6 @@ function popup(){ | ... | @@ -230,7 +272,6 @@ function popup(){ |
230 | 272 | ||
231 | function enterkey() { | 273 | function enterkey() { |
232 | if (window.event.keyCode == 13) { | 274 | if (window.event.keyCode == 13) { |
233 | - | ||
234 | // 엔터키가 눌렸을 때 실행할 내용 | 275 | // 엔터키가 눌렸을 때 실행할 내용 |
235 | send(); | 276 | send(); |
236 | } | 277 | } | ... | ... |
... | @@ -4,7 +4,7 @@ | ... | @@ -4,7 +4,7 @@ |
4 | <meta charset="UTF-8"> | 4 | <meta charset="UTF-8"> |
5 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> | 5 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
7 | - <title>파일 업로드</title> | 7 | + <title>묵호 - 프로필 사진 업로드</title> |
8 | </head> | 8 | </head> |
9 | <body> | 9 | <body> |
10 | <form action = 'upload' method = 'post' enctype="multipart/form-data"> | 10 | <form action = 'upload' method = 'post' enctype="multipart/form-data"> | ... | ... |
-
Please register or login to post a comment