history.back(-2)는 동작하지 않지만 다른 코드에서 원인을 찾아 해결했네요. 블록

[bbs/login_check2.php]
1
2
3
4
5
6
7
8
9
10
11
<?php
    // 로그인 후 페이지 이동
    if($mypos=strrpos($_zb_url,"/bbs/")) // 마지막 슬래쉬 위치 찾아 제거
        $s_url=substr($_zb_url,0,$mypos).urldecode($s_url);
    if(!$s_url&&$id$s_url=$_zb_url."zboard.php?id=$id";
    if($s_url) movepage($s_url);
    elseif($id) movepage($_zb_url."zboard.php?id=$id&page=$page&page_num=$page_num&select_arrange=$select_arrange&desc=$des&sn=$sn&ss=$ss&sc=$sc&sm=$sm&keyword=$keyword&category=$category&no=$no");
    elseif($group[join_return_url]) movepage($group[join_return_url]);
    elseif($referer) movepage($referer);
    else echo "<script>history.go(-2);</script>";
?>


이 소스에서 관리자페이지가 열리지 않은 건 10번 행이 실행돼서 열리지 않은 게 아니라 여기선 9번행이 실행되었고 그 레퍼러 페이지가 admin.php 이고 거기서 movepage() 함수로 admin_setup_bac.php 를 호출했는데 그 페이지가 백지로 나오는 문제였는데 제가 그 백지 상태에서 소스 보기를 해보니 한글이 온통 깨져 보여서 admin_setup_bac.php 페이지 앞 부분에 본문의 메타태그 캐릭터셋을 제외한 header("Content-Type: text/html; charset=euc-kr"); 를 한번 더 기술해 줬더니 영문 Win7 IE11 에서도 그제서야 관리자 페이지가 열리더군요.

근데 이상한 건 $referer 변수인데 제가 lib.php나 제로보드4 어느 페이지를 봐도 $referer 변수는 만들어지지 않았는데 어떻게 서버 환경 변수인 $_SERVER['HTTP_REFERER'] 변수를 참조했느냐는 거죠. 이건 좀 의문입니다. $referer 가 예약어는 아닐텐데 어떻게 이 변수를 사용해서 레퍼러 페이지인 admin.php를 찾아서 이동했을까 하는 점입니다.

그리고 admin_sendmail_ok.php 창이 뜨는 않는 것은 상기 문제를 해결했더니 자연적으로 영문 Win7 IE11에서는 동작하게 되었는데 영문 Win8.1 IE11에서는 여전히 창이 뜨지 않고 메일도 보내지지 않더라구요.

다른 분들도 캐릭터셋 관련 head() 함수를 유심히 살펴보고 적용하시면 동일한 호환성 문제를 해결하실 수 있을 겁니다.

이제 수정된 최종판2를 배포할 수 있을 것 같습니다. 비록 윈도우즈8.1에선 admin_sendmail_ok.php 가 열리지 않는 문제 하나가 남았지만 이만큼 수정한 것도 거의 완벽해진 셈입니다.

도움이 되셨길... ^^;

덧글

  • 희망의빛™ 2016/04/24 19:50 # 답글

    영문 윈도우즈8.1에서 admin_sendmail_ok.php 가 열리지 않는 문제는 알고 봤더니 어이없게도 IE11 인터넷옵션>개인정보 탭에서 팝업차단이 설정돼 있어서 그런 거였더라구요. 전 이것도 모르고 한참을 헤매었네요. 헐~ 알고 나니 허무합니다. 다른 분들도 참고하시기 바랍니다. 켑쳐 이미지를 첨부합니다. 아래 이미지 처럼 해당 도메인을 차단예외 항목으로 추가해 주면 admin_sendmail_ok.php 페이지가 열리면서 메일이 보내지게 됩니다. ㅡ_ㅡ;

    http://www.blrun.net/images/popup_blk.png
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


웹로그 검색