jquery serialize() 함수를 사용하면서 괴상한 경우를 만났네요... 블록

크롬 브라우저에서 테스트했는데요 첫번째 소스 247행과 같이 폼값을 jquery의 serialize()함수를 사용하여 서버 쪽으로 값을 전달 후 두번째 소스와 같이 foreach 문으로 받은 값을 되돌려 찍으면 phpsessid 값을 비롯해 보안 때문에 설정해 둔 자동로그인 세션아이디까지 모두 노출되는데 이거 왜 그런건가요? 비정상적으로 보이는데 이거 이렇게 되면 쉽사리 로그인이 해킹되는것 아닌가요?

황당해서 제가 여기에 노출된 값으로 제가 IE8에서 쿠키값을 찍어 해킹을 시도해 보았더니 에러가 뜨긴 하는데 황당합니다. 이 값이 왜 찍히는 거죠? 전 id 값이 "write" 인 폼 값만 전달했는데 이렇게 다른 값들까지 다 찍히네요. ㅡ_ㅡ;

test3.html 은 247행 부터 유심히 보면 됩니다. 소스를 보시면 아시겠지만 282행에서 autoSave() 함수를 30초마다 실행하도록 돼 있습니다.


[클라이인트 측- test3.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
<!DOCTYPE html>
<!--
ZeroBoard에 대한 라이센스 명시입니다.
 
아래 라이센스에 동의하시는 분만 제로보드를 사용할수 있습니다.
    
프로그램명 : Zeroboard
배포버젼 : 4.1 pl 8 (2007. 5. 23)
개발자 : zero 
Homepage : http://zeroboard.com
 
1. 제로보드의 배포권은 ZEROBOARD.COM에서 허용한 곳에만 있습니다.
   (허락 맡지 않은 재배포는 허용하지 않습니다.)
 
2. 제로보드는 저작권을 아래 3번항목에 의해 표기하는 한도내에서
   개인홈페이지 및 학교나 교회등의 비영리단체, 기업이나 기타 영리단체에서 사용할수 있습니다.
   (반국가 단체나 불법 싸이트에서의 사용은 금지합니다)
 
3. 제로보드 사용시 저작권 명시부분을 훼손하면 안됩니다.
   프로그램 소스, html소스상의 라이센스 및 웹상 출력물 하단에 있는 카피라이트와 링크를 수정하지 마십시요.
   (저작권 표시는 게시판 배포시 작성된 형식만을 허용합니다. 임의 수정은 금지합니다)
 
4. 단, 정식 등록버젼은 저작권 표시를 삭제할수 있습니다.
   정식 등록버젼에 대한 문의는 http://zeroboard.com 에서 문의 방법을 찾아주시기 바랍니다.
 
5. 링크서비스등의 기본 용도에 맞지 않는 사용은 금지합니다.
 
6. 제로보드의 사용으로 인한 데이타 손실 및 기타 손해등 어떠한 사고나 문제에 대해서 ZEROBOARD.COM은 절대 책임을 지지 않습니다.
 
7. 제로보드에 대해 ZEROBOARD.COM은 유지/ 보수의 의무가 없습니다.
 
8. 제로보드 소스는 개인적으로 사용시 수정하여 사용할수 있지만 수정된 프로그램의 재배포는 금지합니다.
   (저작권 관련 부분은 수정금지입니다)
 
9. 제로보드에 쓰인 스킨의 저작권은 스킨 제작자에게 있으며 제작자의 동의하에 수정배포가 가능합니다.
 
10. 기타 의문사항은 http://zeroboard.com 을 이용해 주시기 바랍니다.
    (질문등에 대한 내용은 메일로 받지 않습니다)
 
 
※변경사항: 제로보드4 수정 배포판에 대한 공지 (2009.9.11)
 
제로보드4는 사실상 개발이 중단되었습니다.
 
개발 중단 이유는 개발을 하게 되면 그간 공유된 일만 여개의 스킨이나 플러그인을 더 이상 사용할 수 없기 때문입니다.
스킨이나 플러그인등을 개발하셨거나 이용하신 분들은 아시겠지만 대부분 제로보드4의 기본 DB 정보에 제로보드4를 라이브러리 형식으로 이용하는 구조였기에 제로보드4 기본 파일들의 수정이나 개선시 동작하지 않을 수 밖에 없습니다.
 
제로보드4는 아시다시피 Copyright 이고 상표권이 등록되어 있습니다.
하지만 수정 재배포에 대해서는 허가를 하였습니다.
 
따라서 제로보드4를 기반으로 수정 및 기능 개선을 하여 다른 프로그램으로서 배포하시는 것 역시 가능합니다.
다만 제로보드, zeroboard 와 같은 이름은 쓰실 수 없습니다.
법적으로 쓰실 수 없는 이유도 있지만 제로보드4 가 더 이상 새로운 사이트 개발에 사용되기를 원치 않는 원 개발자의 희망도 있기 때문이니 이해하여 주시기 바랍니다.
 
다만 제로보드4 개작 프로그램에 대해서 여기 제로보드4 공식사이트에 소개하시는 등의 모든 행위는 가능하고 제한이 없습니다.
 
제 관점에서 추가 개발이 불가능하다고 판단하였지만 혹시 다른 관점 혹은 개념으로 개작을 하여 재배포 하실 분들이 있으실 것입니다.
 
프로그램을 배포한다는 것이 많은 책임과 어려움이 있지만 그럼에도 불구하고 개작 프로그램을 위해 노력하고 다른 분들을 위해 배포하실 분들이 있으시면 진심으로 건승을 빌고 그로 인해 더 풍요로운 인터넷 세상이 되기를 바랍니다.
 
 
※기타사항: 제로보드는 무료입니다. 하지만 구매를 원하시는 분은 보세요. (2001.7.27)
 
제로보드는 기본적으로 무료배포 하고 있는 이른바 공짜 CGI입니다.
 
개인이든, 상업적 사이트든, 단체등 어떤곳이든지 무료입니다.
 
하지만 제로보드 사용의 가장 기본적인 의무가 저작권 표시입니다.
 
그런데 상업적인 사이트들이나 단체에서는 경우 부득이 하게 저작권을 삭제해야 할 경우가 있습니다.
 
이미 이런 문제가 여러번 발생하였고, 이런 문제중에 매우 마음이 아픈 사건도 있었기에 제로보드의 저작권을 삭제하는 것에 대해서만 제로보드 판매를 합니다.
 
제로보드 구입버젼과 무료배포본과의 차이는 단지 저작권 표시 유무일 뿐입니다.
 
그외의 어떤 기술적인 지원이나 설치등의 지원도 해드리지 않으며, 손해 발생시에도 책임지지 않습니다.
 
제로보드를 단지 좋다든지 쓰기 편하다는 소문만 듣고 구입하시지 말고, 사용해 보았거나, 사용하고 있는데 부득이 하게 저작권을 삭제해야 할 경우가 생기실때만 구입하시기 바랍니다.
 
제로보드 구매를 위한 방법은 register@nzeo.com으로 메일 보내주시기 바랍니다.
 
* 요즘 메일 바이러스 때문에 제 메일서버가 제대로 메일을 받지 못하는 경우가 있습니다.
  답변이 며칠 늦어질수도 있으니 양해해주시기 바랍니다.
 
※오픈소스 게시판 수정증보판(제로보드4 개작) 개발자: 이윤찬(blrun@daum.net)
-->
<html> 
<head>
<title>자유게시판</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<meta name="viewport" content="width=device-width">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="image_src" href="/blrun2_fb.jpg">
<link rel="alternate" type="application/rss+xml" title="네티즌 세상을 위하여..." href="http://blrun.net/rss/">
<link rel=StyleSheet HREF=skin/nzeo_ver4_bbs/style.css type=text/css title=style>
 
<!-- SyntaxHighlighter 관련 헤더 -->
<link rel="stylesheet" type="text/css" href="syntaxhighlighter/styles/shThemeDefault.css" />
<link rel="stylesheet" type="text/css" href="syntaxhighlighter/styles/shCore.css" />
<SCRIPT type="text/javascript" src="syntaxhighlighter/scripts/jquery-1.7.1.min.js"></SCRIPT>
<script type="text/javascript" src="syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="syntaxhighlighter/scripts/shAutoloader.js"></script>
<SCRIPT type="text/javascript" src="syntaxhighlighter/scripts/jQuery.js"></SCRIPT>
<!-- SyntaxHighlighter 관련 헤더 끝 -->
 
<script language='JavaScript'>
var select_obj;
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
function ZB_layerAction(name, status, myEvent) {
    var obj = document.getElementById(name);
    var _tmpx, _tmpy, marginx, marginy;
    
    _tmpx = myEvent.clientX + parseInt(obj.offsetWidth);
    _tmpy = myEvent.clientY + parseInt(obj.offsetHeight);
    _marginx = document.body.clientWidth - _tmpx;
    _marginy = document.body.clientHeight - _tmpy;
 
    var scrollLeft = (document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft;
    var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
    
    if (_marginx < 0)
        _tmpx = myEvent.clientX + scrollLeft + _marginx;
    else
        _tmpx = myEvent.clientX + scrollLeft;
    if (_marginy < 0)
        _tmpy = myEvent.clientY + scrollTop + _marginy + 20;
    else
        _tmpy = myEvent.clientY + scrollTop;
 
    obj.style.left = (_tmpx - 13) + "px";
    obj.style.top = (_tmpy - 12) + "px";
 
    if (status == 'visible') {
        if (select_obj) {
            select_obj.style.visibility = 'hidden';
            select_obj = null;
        }
        select_obj = obj;
    } else {
        select_obj = null;
    }
    obj.style.visibility = status;
}
 
function decode64(input) {
    var output = "";
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
    while (i < input.length) {
        enc1 = this._keyStr.indexOf(input.charAt(i++));
        enc2 = this._keyStr.indexOf(input.charAt(i++));
        enc3 = this._keyStr.indexOf(input.charAt(i++));
        enc4 = this._keyStr.indexOf(input.charAt(i++));
        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;
        output = output + String.fromCharCode(chr1);
        if (enc3 != 64) {
            output = output + String.fromCharCode(chr2);
        }
        if (enc4 != 64) {
            output = output + String.fromCharCode(chr3);
        }
    }
    output = utf8_decode(output);
    return output;
}
 
function utf8_decode(utftext) {
    var string = "";
    var i = 0;
    var c = c1 = c2 = 0;
    while (i < utftext.length) {
        c = utftext.charCodeAt(i);
        if (c < 128) {
            string += String.fromCharCode(c);
            i++;
        }
        else if ((c > 191) && (c < 224)) {
            c2 = utftext.charCodeAt(i + 1);
            string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
            i += 2;
        }
        else {
            c2 = utftext.charCodeAt(i + 1);
            c3 = utftext.charCodeAt(i + 2);
            string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
    return string;
}
 
function print_ZBlayer(name, homepage, mail, member_no, boardID, writer, traceID, traceType, isAdmin, isMember) {
    var printHeight = 0;
    var printMain="";
 
    if(homepage) {
        printMain = "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('"+homepage+"');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_homepage.gif border=0 align=absmiddle>&nbsp;&nbsp;홈페이지&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(mail) {
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=location.href='mailto:"+decode64(mail)+"';><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_mail.gif border=0 align=absmiddle>&nbsp;&nbsp;메일 보내기&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(member_no) {
        if(isMember) {
            printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('view_info.php?member_no="+member_no+"','view_info','width=400,height=510,toolbar=no,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_memo.gif border=0 align=absmiddle>&nbsp;&nbsp;쪽지 보내기&nbsp;&nbsp;</td></tr>";
            printHeight = printHeight + 16;
        }
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('view_info2.php?member_no="+member_no+"','view_info','width=400,height=510,toolbar=no,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_information.gif border=0 align=absmiddle>&nbsp;&nbsp;회원정보 보기&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(writer) {
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=location.href='zboard.php?id="+boardID+"&sn1=on&sn=on&ss=off&sc=off&keyword="+writer+"';><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_search.gif border=0 align=absmiddle>&nbsp;&nbsp;이름으로 검색&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    }
    if(isAdmin) {
        if(member_no) {
            printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('open_window.php?mode=i&str="+member_no+"','ZBremote','left=1,top=1,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_modify.gif border=0 align=absmiddle>&nbsp;&nbsp;<font color=darkred>회원정보 변경&nbsp;&nbsp;</td></tr>";
            printHeight = printHeight + 16;
        }
        printMain = printMain +    "<tr onMouseOver=this.style.backgroundColor='#bbbbbb' onMouseOut=this.style.backgroundColor='' onMousedown=window.open('open_window.php?mode="+traceType+"&str="+traceID+"','ZBremote','width=870,height=500,left=1,top=1,toolbar=no,scrollbars=yes');><td style=font-family:굴림;font-size:9pt height=18 nowrap='nowrap'>&nbsp;<img src=images/n_relationlist.gif border=0 align=absmiddle>&nbsp;&nbsp;<font color=darkred>관련글 추적</font>&nbsp;&nbsp;</td></tr>";
        printHeight = printHeight + 16;
    
    }
    var printHeader = "<div id='"+name+"' style='position:absolute; left:10px; top:25px; width:127; height: "+printHeight+"; z-index:1; visibility: hidden' onMousedown=ZB_layerAction('"+name+"','hidden',event)><table border=0><tr><td colspan=3 onMouseover=ZB_layerAction('"+name+"','hidden',event) height=3></td></tr><tr><td width=5 onMouseover=ZB_layerAction('"+name+"','hidden',event) rowspan=2>&nbsp;</td><td height=5></td></tr><tr><td><table style=cursor:pointer border='0' cellspacing='1' cellpadding='0' bgcolor='black' width=100% height=100%><tr><td valign=top bgcolor=white><table border=0 cellspacing=0 cellpadding=3 width=100% height=100%>";
    var printFooter = "</table></td></tr></table></td><td width=5 rowspan=2 onMouseover=ZB_layerAction('"+name+"','hidden',event)>&nbsp;</td></tr><tr><td colspan=3 height=10 onMouseover=ZB_layerAction('"+name+"','hidden',event)></td></tr></table></div>";
 
    document.writeln(printHeader+printMain+printFooter);
}
 
function category_change(obj) {
    var myindex=obj.selectedIndex;
    document.search.category.value=obj.options[myindex].value;
    document.search.submit();
    return true;
}
</script>
 
<script language="javascript">
function autoSave()
{
    $.ajax({
        type: "POST",
        url: "http://www.blrun.net/eight/php/study/json_info3_1.php",
        dataType: "json",
        data: $("#write").serialize(),
        /*success: function(data) {
            $('#myDiv').html('<table>');
            $('#myDiv').append('<tr><td>' + unescape(data.id) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.no) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.category) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.notice) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.password) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.name) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.email) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.homepage) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.use_html) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.reply_mail) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.is_secret) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.subject) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.memo) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.sitelink1) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.sitelink2) + '</td></tr>');
            $('#myDiv').append('<tr><td>' + unescape(data.reg_date) + '</td></tr>');
            $('#myDiv').append('</table>');
        }*/
        success: function(data) {
            $('#myDiv').html('<table>');
            for(var i in data) {
                $('#myDiv').append('<tr><td>' + unescape(data[i]) + '</td></tr>');
            }
            $('#myDiv').append('</table>');
        }
    });
}
 
var repeat = setInterval("autoSave()",30000);
 
function unlock()
{
    document.getElementById('check').value=0;
}
 
function check_submit()
{
    var rName=document.getElementById('name');
    var rPass=document.getElementById('password');
    var rSub=document.getElementById('subject');
    var rCheck=document.getElementById('check');
    if(rCheck.value==1)
    {
        alert('글쓰기 버튼을 여러번 누르시면 안됩니다');
        return false;
    }
    var myindex=document.getElementById('write').category[1].selectedIndex;
    if (myindex<1)
    {
        alert('카테고리를 선택하여 주십시요');
        return false;
    }
 
    if(!rName.value)
    {
        alert('이름을 입력하여 주세요.');
        rName.focus();
        return false;
    }
 
    if(!rPass.value)
    {
        alert('암호를 입력하여 주세요.\n\n암호를 입력하셔야 수정/삭제를 할수 있습니다');
        rPass.focus();
        return false;
    }
 
    if(!rSub.value)
    {
        alert('제목을 입력하여 주세요.');
        rSub.focus();
        return false;
    }
    var rStr=document.getElementById('memo');
    if(!rStr.value)
    {
        alert('내용을 입력하여 주세요.');
        rStr.focus();
        return false;
    }
 
    rCheck.value=1;
    show_waiting();
    hideImageBox();
 
    return true;
}
 
var imageBoxHandler;
function showImageBox(id) {
    imageBoxHandler= window.open("image_box.php?id="+id,"imageBox","width=600,height=540,resizable=yes,scrollbars=yes,toolbars=no");
}
 
function hideImageBox() {
    if(imageBoxHandler) {
        if(imageBoxHandler != 'undefined') {
            if(imageBoxHandler.closed==false) imageBoxHandler.close();
        }
    }
}
 
var codeBoxHandler;
function showCodeBox() {
    codeBoxHandler= window.open("pop_code.php","codebox","width=830,height=500,left=1,top=1,toolbar=no,scrollbars=yes");
}
 
function view_preview() {
    var rSub=document.getElementById('subject');
    var rStr=document.getElementById('memo');
 
    if(!rSub.value)
    {
        alert('글쓰기 제목을 입력하여 주세요.');
        rSub.focus();
        return false;
    }
 
    if(!rStr.value)
    {
        alert('글쓰기 내용을 입력하여 주세요.');
        rStr.focus();
        return false;
    }
    var rWrite=document.getElementById('write');
    rWrite.action = "view_preview.php";
    rWrite.target = "_blank";
    rWrite.submit();
    rWrite.action = "write_ok.php";
    rWrite.target = "_self";
 
    return true;
}
 
function preview_m() {
    var rSub=document.getElementById('subject');
    var rStr=document.getElementById('memo');
    if(!rSub.value)
    {
        alert('글쓰기 제목을 입력하여 주세요.');
        rSub.focus();
        return false;
    }
 
    if(!rStr.value)
    {
        alert('글쓰기 내용을 입력하여 주세요.');
        rStr.focus();
        return false;
    }
    var rWrite=document.getElementById('write');
    rWrite.action = "view_preview.php";
    rWrite.target = "_blank";
    rWrite.submit();
    rWrite.action = "skin/nzeo_ver4_bbs/write_ok.php";
    rWrite.target = "_self";
 
    return true;
}
 
function check_use_html(obj) {
    var c_n;
    if(!obj.checked) {
        obj.value=1;
    } else {
        c_n = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
        if(c_n) {
            obj.value=1;
        } else {
            obj.value=2;
        }
    }
}
 
function show_waiting() {
    var _x = document.body.clientWidth/2 + document.body.scrollLeft - 145;
    var _y = document.body.clientHeight/2 + document.body.scrollTop - 44;
    zb_waiting.style.posLeft=_x;
    zb_waiting.style.posTop=_y;
    zb_waiting.style.visibility='visible';
}
 
function hide_waiting() {
    zb_waiting.style.visibility='hidden';
    check_attack.check.value=0;
}
 
function insert_tag(str)
{
    var objSelection = document.selection;
    var objTextArea = document.getElementById('memo');
    objTextArea.focus();
    
    if(typeof objSelection != 'undefined'//IE
    {
        var sRange = objSelection.createRange();
        //var selectedText = sRange.text;
        sRange.text = str;
    }
    else if(typeof objTextArea.selectionStart != 'undefined'//FF
    {
        var sStart = objTextArea.selectionStart;
        var sEnd = objTextArea.selectionEnd;
        objTextArea.value = objTextArea.value.substr(0, sStart) + str + objTextArea.value.substr(sEnd);
        objTextArea.selectionStart = objTextArea.selectionEnd = sStart + 1;
    }
    else
    {
        objTextArea.value += str;
    }
}
 
function doTab(arg1){
    var k;
    if("which" in arg1){k=arg1.which;}
    else if("keyCode" in arg1){k=arg1.keyCode;}
    else if("keyCode" in window.event){k=window.event.keyCode;}
    else if("which" in window.event){k=arg1.which;}
    else{return true;}
 
    if(k == 9) {
        insert_tag("\t");
        return false;
    }
    return true;
}
</script>
<form name=check_attack><input type=hidden id=check name=check value=0></form>
<div id='zb_waiting' style='position:absolute; left:50px; top:120px; width:292; height: 91; z-index:1; visibility: hidden'>
<table border=0 width=98% cellspacing=1 cellpadding=0 bgcolor=black>
<form name=waiting_form>
<tr bgcolor=white>
    <td>
        <table border=0 cellspacing=0 cellpadding=0 width=100%>
        <tr>
            <td><img src=images/waiting_left.gif border=0></td>
            <td><img src=images/waiting_top.gif border=0><br><img src=images/waiting_text.gif></td>
        </tr>
        </table>
    </td>
</tr>
</form>
</table>
</div>
 
</head>
<body topmargin='0' leftmargin='0' marginwidth='0' marginheight='0'  onload=unlock() onunload=hideImageBox()  bgcolor=white >
<center><br><b><span style="color:black;font-size:14pt">&#160;&#160;&#160;&#160;자유게시판</span></b>&#160;&#160;<a href="/eight/" style="color:blue;font-size:9pt;">[Home]</a></center>
<div align=center>
<table border=0 cellspacing=0 cellpadding=0 width=90% height=1 style="table-layout:fixed;"><col width=100%></col><tr><td><img src=images/t.gif border=0 width=98% height=1 name=zb_get_table_width><br><img src=images/t.gif border=0 name=zb_target_resize width=1 height=1></td></tr></table>
 
<SCRIPT LANGUAGE="JavaScript">
<!--
function zb_formresize(obj) {
    obj.rows += 4;
}
// -->
</SCRIPT>
 
<table border=0 width=90% cellsapcing=1 cellpadding=0 style=table-layout:fixed>
<form method=post id=write name=write action=write_ok.php onsubmit="return check_submit();" enctype=multipart/form-data><input type=hidden name="page" value="1"><input type=hidden id="id" name="id" value="eight_bbs1"><input type=hidden id=no name=no value=""><input type=hidden name=select_arrange value="headnum"><input type=hidden name=desc value="asc"><input type=hidden name=page_num value=""><input type=hidden name=keyword value=""><input type=hidden id=category name=category value=""><input type=hidden name=sn value="off"><input type=hidden name=ss value="on"><input type=hidden name=sc value="on"><input type=hidden name=sm value="on"><input type=hidden id=mode name=mode value="write"><input type=hidden name=wantispam value="18">
<col width=80 align=right style="padding-right:10px;height:28px" class=list1></col><col class=list0 style="padding-left:10px;height:28px" width=></col>
<tr class=title>
    <td colspan=2 class=title_han align=center>&nbsp;&nbsp;새로 글 쓰기</td>
</tr>
 
<tr>
    <td width=80 align=right><font class=list_eng><b>Password</b></font></td>
    <td><input type=password id=password name=password  size=20  maxlength=20 class=input></td>
</tr>
<tr>
    <td align=right><font class=list_eng><b>Name</b></font></td>
    <td><input type=text id=name name=name value=""  size=20  maxlength=20 class=input></td>
</tr>
<tr>
    <td align=right><font class=list_eng>E-mail</font></td>
    <td><input type=text id=email name=email value=""  size=40  maxlength=200 class=input></td>
</tr>
<tr>
    <td align=right><font class=list_eng>Homepage</font></td>
    <td><input type=text id=homepage name=homepage value=""  size=40  maxlength=200 class=input></td>
</tr>
 
<tr>
    <td width=80 align=right><font class=list_eng>Option</font></td>
    <td class=list_eng>
        <select name=category><option>Category</option><option value=1>일반</option><option value=2>질문</option><option value=3>답변</option></select>
        <!-- <input type=checkbox id=notice name=notice  value=1>공지사항--> <input type=checkbox id=use_html name=use_html  value='1' onclick='check_use_html(this)'><ZeroBoard>HTML사용 <input type=checkbox id=reply_mail name=reply_mail  value=1>답변메일받기 <input type=checkbox id=is_secret name=is_secret  value=1>비밀글    </td>
</tr>
<tr valign=top>
    <td align=right><font class=list_eng><b>Subject</b></font></td>
    <td><input type=text id=subject name=subject value=""  size=60  maxlength=200 style=width:99% class=input></td>
</tr>
<tr>
    <td align=right onclick=document.getElementById('memo').rows=document.getElementById('memo').rows+4 style=cursor:pointer><font class=list_eng><b>Memo</b></font> <font class=list_eng></font></td>
    <td style=padding-top:8px;padding-bottom:8px;><textarea id=memo name=memo  cols=90  rows=18 class=textarea style=width:99% onkeydown='return doTab(event);'></textarea></td>
</tr>
 
<tr>
    <td width=80 align=right><font class=list_eng>Link #1</font></td>
    <td><input type=text id=sitelink1 name=sitelink1 value=""  size=62  maxlength=200 class=input style=width:99%></td>
</tr>
 
 
<tr>
    <td width=80 align=right><font class=list_eng>Link #2</font></td>
    <td><input type=text id=sitelink2 name=sitelink2 value=""  size=62  maxlength=200 class=input style=width:99%></td>
</tr>
 
<!--
<tr>
    <td width=80 align=right><font class=list_eng>Upload #1</font></td>
    <td class=list_eng><input type=file name=file1  size=50  maxlength=255 class=input style=width:99%> </td>
</tr>
<tr>
    <td align=right><font class=list_eng>Upload #2</font></td>
    <td class=list_eng><input type=file name=file2  size=50  maxlength=255 class=input style=width:99%> </td>
</tr>
-->
</table>
<table border=0 width=90% cellsapcing=1 cellpadding=0>
<tr>
    <td width=200 height=40>
        <a onfocus=blur() href='#' onclick='javascript:return view_preview();'><font class=list_eng>&nbsp;&nbsp;미리보기</a>
        <Zeroboard &nbsp;&nbsp;그림창고</a>
        <a onfocus=blur() href='javascript:showCodeBox()'><font class=list_eng>&nbsp;&nbsp;코드삽입</a>
    </td>
    <td align=right>
        <input type=submit value="작성완료" class=submit accesskey="s">
        <input type=button value="취소하기" class=button onclick=history.back()>
    </td>
</tr>
</form>
</table>
<br>
<div id="myDiv"><h2>AJAX로 이 문장을 화면 깜빡임 없이 바꿔보자!</h2></div>
<table border=0 cellpadding=0 cellspacing=0 height=20 width=90%>
<tr>
    <td align=right style=font-family:tahoma,굴림;font-size:8pt;line-height:150%;letter-spacing:0px>
        <font style=font-size:7pt>Copyright 1999-2015</font> <font style=font-family:tahoma,굴림;font-size:8pt;><a href=http://www.xpressengine.com/zb4_main target=_blank onfocus=blur()>Zeroboard</a> / skin by <a href=http://www.xpressengine.com/ target=_blank onfocus=blur()>zero</a></font>
    </td>   
</tr>
</table>
 
</div>
<!-- 접속통계 관련 헤더 -->
<script src="aanalyzer/screen.js" type="text/javascript"></script>
 
</body>
</html>
 
 
<!--
 Session Excuted  : 0.0001
 Connect Checked  : 0.0001
 Query Excuted  : 0.000
 PHP Excuted  : 0.047
 Skins Excuted  : 0.000
 Total Excuted Time : 0.048
-->
 

[서버측- json_info3_1.php]
1
2
3
4
5
6
7
8
9
<?php
header("Content-Type: application/javascript; charset=utf-8");
 
foreach($_REQUEST as $key=>$value) { 
    $jsontable[]="<b>".$key.":</b> ".$value;
}
 
print json_encode($jsontable);
?>

[결과 화면- 클라이언트 쿠키값이 다 보입니다]

덧글

  • Hide_D 2015/07/12 18:51 # 답글

    IE8을 쓰는 사람이 없어 댓글조차 없는 문제.
  • 말홍 2015/07/13 16:17 # 삭제 답글

    .. 위소스는 post 로 보내셨으니 처리부분에서는 $_POST 로 처리하시면 쿠키이런값은 안보일겁니다...
    $_REQUEST 는 http request 정보니까...쿠키는 당연히 있겠지요. 쿠키가 노출되서 뭐문제라도 있나요? 원래 노출되는게 쿠키인데.
    phpsessid 도 일단은쿠키이고...php use_trans_sid 항목참고. php보안쪽 조금만 신경쓰시면 문제는 될게없죠..
  • 엘레시엘 2015/07/13 16:19 # 답글

    serialize 빼고 똑같은거 다시 해보세요. 그리고 이런 질문 올리기 전에 문서를 한번 보세요.
    http://php.net/manual/kr/reserved.variables.request.php
    "An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE"
    원래 그런거 다 실려오는 super global임. $_REQUEST에 쿠키 세션값 안실려오면 로그인 체크도 못합니다 -_-;

    젠장 내가 뭐 잘못알고있나 문서 다시 디벼봤네...
  • 희망의빛™ 2015/07/14 21:50 #

    역시 결정적일 때 도움을 주시는 엘레시엘님이시네요. ^ㄴ^
    덕분에 1px 라인이 두꺼워지는 문제를 해결했구요 DOCTYPE 이 이렇게 여러가지 종류가 있는 줄은 몰랐습니다. 예전에 소스보기나 소스 에디터 사용할 때 본적은 있는데 그 의미를 잘 몰라서 잘 사용하지 않는 문법이었는데 이렇게 적용해 보니 차이점이 존재하고 있었네요. 그리고 $_REQUEST 값에 그런 쿠키 값이 실려오는지는 전혀 몰랐습니다. 그렇게 폼값을 serialize() 하면 그런 write_ok나 로그인 등의 처리를 위해 내부적으로 쿠키값까지 딸려와서 그런 동작이 가능했던 거였군요.

    제가 방금 write_ok.php 파일 맨 앞에 다음과 같은 코드를 기술해 주었더니 exit; 이후는 무시되고 정말 그런 값들이 전부 넘어와지더군요. 이건 꼭 serialize 구문만의 문제가 아니라 form값이 전달될 때 원래가 그런 거였군요. ㅡ_ㅡ;

    foreach($_REQUEST as $key=>$value) {
    $jsontable[]="<b>".$key.":</b> ".$value;
    }
    foreach($jsontable as $value)
    echo $value."<br>";
    exit;

    도움을 주신 엘레시엘님께 다시한번 감사드린다는 말씀 전합니다. 많은 공부가 되었네요. 고맙습니다.
  • 엘레시엘 2015/07/13 16:23 # 답글

    아 그리고 이전 글에 Hide_D님이 조언 달아주셨던데...
    jQuery .append() 그런 식으로 쓰면 안됩니다.
    왠만하면 html string을 변수 하나에 다 합쳐서 .html()로 한번에 넣는게 훨씬 빠릅니다. 특히나 주인장님 사랑하시는 IE8 이전 버전 같이 렌더링과 JS 둘 다 무진장 느린 브라우저들은 특히 더 그렇고요. 굳이 쓰려면 html tag 완결한 상태로 넣으세요.
  • 희망의빛™ 2015/07/13 21:59 #

    그것도 유념하겠습니다. ^^;
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색