Mukho

Trimming

This diff could not be displayed because it is too large.
...@@ -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">
......