IE11 때문에 미치겠네요. 회원정보 수정에서 수정완료 후 팝업이 닫히지 않습니다. 블록

소스를 보시면 아시겠지만 아래와 같습니다. IE11에서 제 사이트 회원가입이나 회원정보 수정을 하고 완료버튼을 누르면 팝없이 닫히면서 부모창이 갱신되게 돼 있는데 이게 회원정보 입력창이 닫히지를 않습니다. 아무리 해봐도 안되던데 우라질 IE11 때문에 다른 브라우저에선 멀쩡하게 동작하는 소스를 고치려고 하다보니 아주 짜증이 밀려옵니다. IE11 때문에 며칠 전 아이디 체크 안되는 문제부터 shaind 님이 한글이 깨진다는 문제까지 완전 제대로 저를 골탕 먹이네요. 아이디체크와 shaind 님이 한글 깨진다는 문제는 getElementById 를 사용하고 메타태그를 삽입함으로써 간단하게 해결했는데 팝업이 안닫히는 문제는 아무리 찾아보고 바꿔봐도 모르겠네요. 혹시 이 문제 해결법 아시는 분 계신가요?

아래 소스에서 154번과 155번을 고치면 되는데 이걸 opener.reload(); 이나 opener.document.location.reload(); 나 window.opener.location.reload(); 나 opener.parent.location.reload(); 나 window.opener.parent.location.reload(); 로 수정한 다음 window.close(); 나 self.close(); 로 고치는 등 암만 해봐도 차일드 창이 닫히지를 않습니다.

참으로 괴상한 현상이네요. 여러분들도 윈도우즈7 IE11 에서 http://www.blrun.net/ 로 접속해서 회원가입 누른 다음 아무 아이디나 가입해서 함 "회원가입이 정상적으로 처리 되었습니다\n\n회원이 되신것을 진심으로 축하드립니다." 메시지를 확인한 다음 반응을 보시거나 거기서 재현이 안되면 회원정보 수정하기로 회원정보 수정을 해준 다음 "회원님의 정보 수정이 제대로 처리되었습니다." 메시지를 확인한 후 제대로 회원정보 창이 닫히는지 확인해 보시기 바랍니다. 안닫힙니다. 참 미치겠네요. ㅡ_ㅡ;

[bbs/member_modify_ok.php]
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
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<?
// 라이브러리 함수 파일 인크루드
include "lib.php";
 
if(getenv("REQUEST_METHOD") == 'GET' ) Error("정상적으로 글을 쓰시기 바랍니다","");
 
// DB 연결
if(!$connect$connect=dbConn();
 
// 멤버 정보 구해오기;;; 멤버가 있을때
$member=member_info();
if(!$member[no]) Error("회원정보가 존재하지 않습니다");
$group=group_info($member[group_no]);
 
$name = str_replace("ㅤ","",$name);
 
if(!get_magic_quotes_gpc()) {
    $password = addslashes($password);
    $password1 = addslashes($password1);
    $email = addslashes($email);
}
 
if(isblank($name)) Error("이름을 입력하셔야 합니다");
if(preg_match("/[\!@\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>\.,\?\/\'\"]/i",$name)) Error("이름을 영문, 한글, 숫자등으로 입력하여 주십시요");
 
// 패스워드를 입력 확인 및 암호화
if($password){
    //stripslashes($password);
    if($password) {
        $temp=mysql_fetch_array(mysql_query("select password('$password')"));
        $password=$temp[0];   
    }
}
if($password1){
    //stripslashes($password1);
    if($password1) {
        $temp=mysql_fetch_array(mysql_query("select password('$password1')"));
        $password1=$temp[0];   
    }
}
if($password!=$password1) Error("비밀번호와 비밀번호 확인이 일치하지 않습니다","");
 
$birth=mktime(0,0,0,$birth_2,$birth_3,$birth_1);
 
$check=mysql_fetch_array(mysql_query("select count(*) from $member_table where email='$email' and no <> ".$member[no],$connect));
if($check[0]>0) Error("이미 등록되어 있는 E-Mail입니다");
 
$name = addslashes(del_html($name));
 
if(preg_match("/[\!@\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>\.,\?\/\'\"]/i",$job)) Error("직업을 영문, 한글, 숫자등으로 입력하여 주십시요");
$job = addslashes(del_html($job));
 
preg_match('/[0-9a-zA-Z.\@\_]+/',$email,$result); //특수문자가 들어갔는지 조사
if($result[0]!=$email) Error("E-mail 문자를 확인하세요(영문자와 숫자, ., @, _만을 사용!)","");    
$email = addslashes(del_html($email));
if($_zbDefaultSetup[check_email]=="true"&&!mail_mx_check($email)) Error("입력하신 $email 은 존재하지 않는 메일주소입니다.<br>다시 한번 확인하여 주시기 바랍니다.");
 
if(!preg_match("/http:\/\//i",$homepage)&&$homepage$homepage="http://$homepage";
if(preg_match("/[\!@\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>,\?\'\"]/i",$homepage)) Error("홈페이지 주소를 영문, 한글, 숫자, -, ., / 등으로 입력하여 주십시요");
$homepage = addslashes(del_html($homepage));
 
$birth = addslashes(del_html($birth));
 
if(preg_match("/[\!@\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>\.,\?\'\"]/i",$hobby)) Error("취미를 영문, 한글, 숫자, / 등으로 입력하여 주십시요");
$hobby = addslashes(del_html($hobby));
 
preg_match('/[0-9a-zA-Z.\@\_]+/',$icq,$result); //특수문자가 들어갔는지 조사
if($result[0]!=$icq) Error("icq 아이디를 확인하세요(영문자와 숫자, ., @, _만을 사용!)","");
$icq = addslashes(del_html($icq));
 
//AIM(aol) 아이디 정규표현
preg_match('/[0-9a-zA-Z.\@\_]+/',$aol,$result); //특수문자가 들어갔는지 조사
if($result[0]!=$aol) Error("AIM(aol) 아이디를 확인하세요(영문자와 숫자, ., @, _만을 사용!)","");
$aol = addslashes(del_html($aol));
 
preg_match('/[0-9a-zA-Z.\@\_]+/',$msn,$result); //특수문자가 들어갔는지 조사
if($result[0]!=$msn) Error("msn 아이디를 확인하세요(영문자와 숫자, ., @, _만을 사용!)","");
$msn = addslashes(del_html($msn));
 
if(preg_match("/[\!\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>,\?\/\'\"]/i",$home_address)) Error("주소를 영문, 한글, 숫자, @, . 등으로 입력하여 주십시요");
$home_address = addslashes(del_html($home_address));
 
if(preg_match("/[\!@\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>\.,\?\/\'\"]/i",$home_tel)) Error("집전화를 영문, 한글, 숫자등으로 입력하여 주십시요");
$home_tel = addslashes(del_html($home_tel));
 
if(preg_match("/[\!\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>,\?\/\'\"]/i",$office_address)) Error("사무실 주소를 영문, 한글, 숫자, @, . 등으로 입력하여 주십시요");
$office_address = addslashes(del_html($office_address));
 
if(preg_match("/[\!@\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>\.,\?\/\'\"]/i",$office_tel)) Error("사무실 전화번호를 영문, 한글, 숫자등으로 입력하여 주십시요");
$office_tel = addslashes(del_html($office_tel));
 
if(preg_match("/[\!@\\\#\$%\^&\(\)\+\|=\{\}\[\]\;<>\.,\?\/\'\"]/i",$handphone)) Error("핸드폰 번호를 영문, 한글, 숫자등으로 입력하여 주십시요");
$handphone = addslashes(del_html($handphone));
 
if(preg_match("/[@\\\#\$&\(\)\+\|=\{\}\'\"]/i",$comment)) Error("자기소개를 영문, 한글, 숫자, !, %, ^, -, _, ; ?, /, <>, . 등으로 입력하여 주십시요. 괄호나 그밖의 특수문자, 따옴표 등은 허용되지 않습니다!");
$comment = addslashes(del_html($comment));
 
$que="update $member_table set name='$name'";
if($password&;amp;&$password1&;amp;&$password==$password1$que.=" ,password='$password' ";
if($birth_1&;amp;&$birth_2&;amp;&birth_3&&$group[use_birth]) $que.=",birth='$birth'";
if($email$que.=",email='$email'";
$que.=",homepage='$homepage'";
if($group[use_job]) $que.=",job='$job'";
if($group[use_hobby]) $que.=",hobby='$hobby'";
if($group[use_icq]) $que.=",icq='$icq'";
if($group[use_aol]) $que.=",aol='$aol'";
if($group[use_msn]) $que.=",msn='$msn'";
if($group[use_home_address]) $que.=",home_address='$home_address'";
if($group[use_home_tel]) $que.=",home_tel='$home_tel'";
if($group[use_office_address]) $que.=",office_address='$office_address'";
if($group[use_office_tel]) $que.=",office_tel='$office_tel'";
if($group[use_handphone]) $que.=",handphone='$handphone'";
if($group[use_mailing]) $que.=",mailing='$mailing'";
$que.=",openinfo='$openinfo'";
if($group[use_comment]) $que.=",comment='$comment'";
$que.=",openinfo='$openinfo',open_email='$open_email',open_homepage='$open_homepage',open_icq='$open_icq',open_msn='$open_msn',open_comment='$open_comment',open_job='$open_job',open_hobby='$open_hobby',open_home_address='$open_home_address',open_home_tel='$open_home_tel',open_office_address='$open_office_address',open_office_tel='$open_office_tel',open_handphone='$open_handphone',open_birth='$open_birth',open_picture='$open_picture',open_aol='$open_aol' ";
$que.=" where no='$member[no]'";
 
@mysql_query($que) or Error("회원정보 수정시에 에러가 발생하였습니다 ".mysql_error());
 
if($del_picture) {
    @z_unlink($member[picture]);
    @mysql_query("update $member_table set picture='' where no='$member[no]'") or Error("사진 자료 업로드시 에러가 발생하였습니다");
}
 
if($HTTP_POST_FILES[picture]) {
    $picture = $HTTP_POST_FILES[picture][tmp_name];
    $picture_name = $HTTP_POST_FILES[picture][name];
    $picture_type = $HTTP_POST_FILES[picture][type];
    $picture_size = $HTTP_POST_FILES[picture][size];
}
 
if($picture_name) {
    //특수문자가 들어갔는지 조사
    preg_match('/[0-9a-zA-Z.\(\)\[\] \+\-\_\xA1-\xFE\xA1-\xFE]+/',$picture_name,$result);
    if($result[0]!=$picture_name) Error("파일명은 한글,영문자,숫자,괄호,공백,+,-,_ 만을 사용할 수 있습니다!");
 
    if(!is_uploaded_file($picture)) Error("정상적인 방법으로 업로드 해주세요");
    if(!preg_match("#\.(jpg|jpeg|png|gif|bmp)$#i",$picture_name)) Error("사진은 jpg(jpeg)/png/gif/bmp 파일을 올려주세요!");
    $size=GetImageSize($picture);
    if($size[0]>480||$size[1]>480) Error("사진의 크기는 480*480이하여야 합니다!");
    $kind=array("","jpg","jpeg","png","gif","bmp");
    $n=$size[2];
    $path="icon/member_".time().".".$kind[$n];
    if(!move_uploaded_file($picture,$path)) Error("사진 업로드가 제대로 되지 않았습니다");
    @mysql_query("update $member_table set picture='$path' where no='$member[no]'") or Error("사진 자료 업로드시 에러가 발생하였습니다");
}
 
mysql_close($connect);
?>
<script>
alert("회원님의 정보 수정이 제대로 처리되었습니다.");
opener.window.history.go(0);
window.close();
</script>
 

덧글

  • 이굴루운영팀 2015/11/05 13:58 # 답글

    더미칠개있다니
  • LuicePsyfer 2015/11/05 14:34 # 답글

    windows.open() 으로 열린 자식창을 자식창에서 close 시키는건 보안 문제로 막혀있을텐데요
  • 래칫 2015/11/05 15:08 # 답글

    리플볼려고 왔는데 너무 일찍왔네요
  • 무명병사 2015/11/05 15:55 # 답글

    전 아저씨 때문에 미치겠네요.
  • 루루카 2015/11/05 16:03 #

    팝콘 재고 다 떨어지겠어요.
  • 희망의빛™ 2015/11/05 16:14 # 답글

    LuicePsyfer// 브라우저 보안과 윈도우 오픈으로 열린 팝업 닫는 명령과 무슨 상관인데요? 이해가 안됩니다.
  • 재규어 2015/11/05 16:25 # 삭제 답글

    이거 전형적인 국가 기관 쪽에서 해킹하는 방식의 에러인데...
  • shaind 2015/11/05 16:48 # 답글

    와 이글 덕분에 blrun.net에 지금 손님 접속자가 5명이나 되네요! 지난번엔 1명이었는데.
  • 아스트린 2015/11/05 17:21 # 답글

    그와중에 DB접속 함수가 mysql()이네요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ PDO나 mysqli 사용하시는걸 추천드립니다.
  • CEFV 2015/11/05 17:52 # 답글

    팝콘 파시는 분들 안계십니까
  • 2015/11/05 18:12 # 삭제 답글

    이젠 아예 대놓고 해답을 구걸하는 건가. 혹시 정말로 개발로 먹고 사는 사람이라면 어디 소속인지 찾아내어 잘라버리고 싶음. 진심.
  • SoulGroove 2015/11/05 21:29 # 답글

    팝콘 있으여~ 콜라 환타 사이다도 있습니다~
  • 희망의빛™ 2015/11/06 05:56 # 답글

    154행의 opener.window.history.go(0); 를 주석처리 했더니 그 아래 행인 window.close(); 가 실행돼 팝업이 닫히긴 하더군요. 결국 이 대신 잇몸으로 불완전하지만 해결을 보았습니다.
  • 행인1 2017/08/21 10:22 # 삭제 답글

    window.open('about:blank', '_self').close();
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색