본문으로 바로가기

오늘 우연하게(?) 봄이 받고 있는 호스팅 업체에 제로보드를 설치해 주다가 수정한 것입니다.

환경은
PHP : 5.x
MySQL : 5.x
이렇습니다.

현상은 다음과 같습니다
admin.php 페이지에서 로그인 id/pw 정상적으로 입력을 했음에도 불구하고 admin-setup.php로 넘어가지 않는 것입니다.

먼저 login_check.php 파일을 열어 봅니다.

  1. session_register("zb_logged_no");
  2. session_register("zb_logged_time");
  3. session_register("zb_logged_ip");
  4. session_register("zb_last_connect_check");

이런 게 있습니다.

혹시나 해서
print_r($_SESSION);
을 했더니 빈값입니다.

우선은 login_check.php 파일부터 손을 잠깐 보겠습니다.
위에 저 부분을

  1. $_SESSION["zb_logged_no"] = $zb_logged_no;
  2. $_SESSION["zb_logged_time"] = $zb_logged_time;
  3. $_SESSION["zb_logged_ip"] = $zb_logged_ip;
  4. $_SESSION["zb_last_connect_check"]= $zb_last_connect_check;

이렇게 바꿉니다.
print_r($_SESSION);
을 하게 되면

Array
(
    [zb_last_connect_check] => 0
    [zb_logged_no] => 1
    [zb_logged_time] => 1229406938
    [zb_logged_ip] => xxx.xxx.xxx.xxx <- 이거는 자체 필터링;; 쿨럭
)

이렇게 나오네요.

php.ini에 보면 register_globals라는 항목이 있는데 Off로 되어 있기 때문에 그렇습니다.
우리나라의 경우는 어지간한 호스팅 업체는 On입니다.
보안이나 이런 것들을 위해서도 Off로 사용하시는 게 좋습니다.

자 이제 됐으니 다시 로그인을 해 봅니다.
또 아까와 같은 상황입니다.

세션은 정상적으로 생성이 되었습니다.

혹시나 해서 admin.php 소스를 보면 admin_setup.php 페이지로 넘기는 부분이 보이고

  1. <?
  2. include "lib.php";
  3. $connect=dbConn();
  4. $member=member_info();
  5. if(($member[no]&&$member[is_admin]<3&&$member[is_admin]>=1)||($member[no]&&$member[board_name])) move page("admin_setup.php");

이렇게 되어 있습니다.
if문에 있는 조건에 부합하지 않다는 거겠죠.

이번엔 lib.php를 열어 봅니다.
$member=member_info();
얘를 먼저 봅니다.
member_info()라는 함수를 검색해 보겠습니다.

  1. function member_info() {
  2.     global $HTTP_SESSION_VARS, $member_table, $member, $connect;
  3.     if(defined("_member_info_included")&&$member[no]) return $member;
  4.     define("_member_info_included", true);
  5.     if($member[no]) return $member;
  6.     if($HTTP_SESSION_VARS["zb_logged_no"]) {
  7.         $member=mysql_fetch_array(mysql_query("select * from $member_table where no ='".$HTTP_SESSION_VARS["zb_logged_no"]."'"));
  8.         if(!$member[no]) {
  9.             unset($member);
  10.             $member[level] = 10;
  11.         }
  12.     } else $member[level] = 10;
  13.     return $member;
  14. }

저렇게 나오네요.
위에 또 이상한 게 보입니다.

$HTTP_SESSION_VARS;
$HTTP_SESSION_VARS["zb_logged_no"];

php.ini에서 register_long_arrays가 Off로 되어 있으면 저렇게 긴 녀석도 사용을 할 수가 없습니다.
참고로 PHP6에선 아예 삭제한다고 합니다.
그러니 아예 지금부터 사용을 않는 게 좋겠죠.
http://kr2.php.net/manual/kr/function.session-register.php

$_SESSION;
$_SESSION["zb_logged_no"];

이렇게 바꿔 주시면 됩니다.
이제 정상적으로 잘 되는지 테스트 해 보시기 바랍니다.

* 수정한 파일은 올리지 않았습니다.
수정한 파일의 재배포는 제작자인 제로 님의 허락이 있어야 하기에.
솔직히 수정이라는 단어를 쓰기도 좀 웃기네요. ㅋㅋㅋ
달랑 단어 몇 개 바꿨는데.

신고

댓글을 달아 주세요

  1. 강철지크 신고">2009.01.20 23:35 신고

    덕분에 답답한 부분을 해소했어요.
    감사합니다~

  2. 본디 신고">2009.05.01 03:30 신고

    HTTP_SESSION_VARS는 모두 바꿔야 하나요?
    lip.php파일에서요..

    위에 보이는 부분만 수정하여 실행해봤는데.. 로그인 실패는 똑같습니다.
    제로보드 설치하고, 관리자 로그인 하는 것부터 이렇게 막히네요..
    급한 맘에.. 이렇게 씁니다.
    답변해주시면 좋겠어요.. 메일로 주셔도 좋구요..

    surii75@nate.com

    • 괄리자 신고">2009.05.01 15:38 신고

      현재 사용하시는 호스팅의 php 설정이 어떻게 되어 있는지 확인을 하셔야 합니다.
      test.php 같은 파일을 하나 만드셔서 <? phpinfo(); ?>를 넣고 저장하신 후에 파일을 실행시켜 보세요.
      그러면 php 버젼이 얼만지 나올 겁니다.
      본문에 회색 박스로 처리된 거 그 부분들도 거기서 확인해 보세요.

      만약 php 버젼이 5.x대라면 말씀하신 대로 $HTTP_SESSION_VARS라고 된 건 죄다 $_SESSION으로 바꿔서 사용해 보시기 바랍니다.

      제가 수정을 한 건 언급된 파일들만 한 것이기 때문에 실제로 다른 페이지가 인클루드 되어 있을 경우엔 그 부분도 수정을 하셔야 합니다.


      결론은 안 보고는 답을 드리기가 좀 힘이 드네요. ㅋ

    • 본디 신고">2009.05.01 20:48 신고

      test.php를 만들어 실행하니.. php 버젼이 4.3.1이군요..
      그리고.. 호스팅 업체 관리자가 서버에서 resister_globals를 사용하지 못하게 하고, .htaccess를 삽입하여 강제로 사용가능하게 해 놨다고 합니다.
      하지만, 해결되지 않네요.. ㅜㅜ;

    • 괄리자 신고">2009.05.02 01:18 신고

      register_globals를 Off로 설정이 되어 있다면 굳이 바꿀 필요 있나요?
      .htaccess는 어지간하면 안 건드리는 게 나은데.

      로그인을 해서 submit을 하게 되면 이동되는 페이지에서 print_r($_POST)를 해 보세요.
      정상적으로 post값들이 다 나오는지 확인해 보셔야 할 것 같네요.

  3. 2009.05.15 21:56

    비밀댓글입니다

    • 괄리자 신고">2009.05.16 02:49 신고

      현재로선 답변을 드릴 만한 게 없네요.
      조금 더 자세하게 문제점을 남겨 주시면 답변이 가능할 듯합니다.
      예를 들어 로그인을 하려고 했을 때 어떤 에러 메시지가 뜬다는 거나 로그인은 안 되고 계속 해당 페이지 새로 고침만 일어난다는 것들요.
      그리고 현재 사용 중이신 호스팅 정보도 남겨 주시는 게 아마 도움이 되지 않을까 싶습니다.
      호스팅 정보는 호스팅 업체에 물어 보시면 나오겠네요.
      php, mysql 버젼이 어떻게 되는지를 알아야 하거든요.

  4. Favicon of http://hotchoco.dothome.co.kr BlogIcon T.T 신고">2011.01.17 01:54 신고

    ㅜㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ정말 감사해요ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
    로그인이 안 되다가 한가지 수정하니깐, 제대로 되네요
    아마 홈페이지가 이상해진게 보완차원에서 홈페이지에 방패모양?을 달았었는데
    갑자기 글씨체가 바뀌고 글씨도 커지더라고요;; 로그인도 안되고..........T.T.........
    사진도 막 엑박이 뜨드라구요ㅠㅠㅠㅠ왤까요?
    컴퓨터...컴맹이라...홈페이지도 하고 싶어서 하는건데... 어려운 점이 너무 많네요.......ㅠㅠ
    컴퓨터를 배워서 하는 것도 아니고 개인적으로 끄적거리는거라... 힘든 점이 많아요;;

    혹시 글씨체가 커지고 바뀐 이유도 알려주실 수 있나요?;;사진이 엑박뜨는 이유도.....?
    죄송해요;;

    • Favicon of http://nyaongnyaong.com BlogIcon zzins 신고">2011.01.17 10:26 신고

      글쎄요,
      폰트가 커진 거는 브라우져 자체의 설정 문제(?)일 수도 있습니다.
      보기(V) - 텍스트 크기(X) - 보통(M)
      이게 맞게 선택되어졌나 보세요.
      아니면 현재 화면 우측 하단에 100%로 제대로 되어 있는지도 보시구요.
      돋보기 모양 있는 부분입니다.

      혹시나 해서 홈페이지 경로로 들어가 보니 이미지 주소가 로컬로 되어 있네요.
      저 이미지를 html이 올려져 있는 곳에 올리셔서 그 경로를 같이 저장해 주셔야 합니다.
      그리고 이미지 이름은 되도록 영문으로 하시구요.

  5. ㅠㅠㅠㅠ 신고">2013.10.31 21:40 신고

    아 정말 감사합니다ㅠㅠㅠㅠㅠ 갑자기 제로보드 로그인이 안 되서 db 삭제하고 호스팅 재설치하고 난리였는데
    적어주신대로 따라하니까 한 번에 되네요... 정말 감사합니다ㅠㅠㅠㅠㅠㅠㅠ

  6. Favicon of http://simtozi.tistory.com/ BlogIcon 심규인 신고">2013.12.26 09:17 신고

    정말정말 감사합니다. 이거 저것 다 해보고 있었는데 이게 정답이였어요!!!!

  7. ㅎㅈ이 신고">2014.03.24 22:11 신고

    아진짜 감사합니다ㅠㅠ모든 지식인 답변들을 써봐도 되지않았는데ㅠㅠㅠㅠㅠㅠㅠㅠ아정말감사해요ㅠㅠㅠ

  8. Lazche 신고">2014.08.16 23:29 신고

    정말 감사합니다.
    안그래도 새로 설치하려는 db의 php버전이 5.x대라서 계속 로그인 오류가 났는데 덕분에 수정하였습니다.
    다만 위에서 말씀하신 두파일만 수정하니 하얀화면만 떠서 혹시나하고 admin.php 파일을 보니 login_check.php 파일과 같은 부분이 있어서 동일하게 수정하였더니 성공했습니다. 제가 그전에 실수한 부분이 있었을진 모르겠지만 하여간 저와 같은 오류로 고생하는 분이 계실까 덧글 남김니다.

  9. 남형우 신고">2014.08.20 21:50 신고

    덕분에 골치아픈 문제가 해결되었습니다!
    정말 감사합니다!

  10. 떡볶이 신고">2014.08.27 20:44 신고

    안녕하세요ㅠㅠ!로그인 문제때문에 지식인에 있는 모든 방법을 써봐도 안되서 좌절하던차에 이 방법으로 해보니 로그인이 됩니다...!
    정말정말 감사합니다T____T!!!!!!

  11. 소행 신고">2015.09.13 15:35 신고

    감사합니다... 정말 이것 때문에 외국 사이트 번역기 돌리고 별 난리를 다 했는데
    이거 하나로 모두 해결 되었네요! 감사합니다ㅜㅜ