로그인 후에 메인페이지로 계속 이동이 되네요. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

로그인 후에 메인페이지로 계속 이동이 되네요. 정보

로그인 후에 메인페이지로 계속 이동이 되네요.

본문

서브페이지에서 로그인하면 메인페이지로 이동됩니다.
로그인 한 현재 페이지에 머물게 하고 싶습니다.



위와 같은 질문을 찾아서 해봤는데...

bbs/login_check.php 파일
$link = $g4[path];를 $link = $_SERVER['HTTP_REFERER'];로 수정

저는 안되네요....ㅜㅡ



다른 문제가 있는건지요???
날이 많이 춥네요. 건강들 유의하세요...ㅜㅡ

댓글 전체

bbs/login_check.php 파일의 어느 부분에서 수정하셨나요?

저는 맨 마지막 부분에서 수정했는데...잘되네요.
그누보드4 최근 소스 사용하였구요.

else
    //$link = $g4[path];                            // <-  수정하기전.
    $link = $_SERVER['HTTP_REFERER'];  // <-  수정한 부분
goto_url($link);
?>
---------------------------------------------------
else
    //$link = $g4[path];
$link = $_SERVER['HTTP_REFERER'];

alert($link);
goto_url($link);
?>
---------------------------------------------------

이렇게 디버깅을 해보셔야겠습니다.

$link 값이 로그인한후 뜨길 원하는 페이지인지 확인하려면요...
메인 주소가 나오네요.

배추빌더를 쓰고 있어서 마이위트에도 물어보니 이렇게 답변을 해주시던데요.

--------------------------------------------------------------------------

로그인 링크가 이런식으로 되어야 합니다.
<a href="<?=$g4[bbs_path]?>/login.php?url=<?=$urlencode?>">로그인</a>

--------------------------------------------------------------------------

어느 부분을 수정해야하는지 모르겠네요...ㅜㅜ
그누보드4 소스를 중심으로 분석해 봤습니다.

1 ================================================================================
파일명 : common.php

소스 line : 378

// URL ENCODING
if (isset($url)) {
    $urlencode = urlencode($url);
}
else {
    // 2008.01.25 Cross Site Scripting 때문에 수정
    //$urlencode = $_SERVER['REQUEST_URI'];
    $urlencode = urlencode($_SERVER[REQUEST_URI]);
}

<===========이부분에서  $urlencode변수에 요청한 페이지의 url을 저장합니다.

2 ================================================================================
그누4 왼쪽 메뉴를 이용한 로그인의 경우
outlogin.skin.1.php

line : 24

    $outlogin_url = $urlencode; <=== 그리고 이부분에서$urlencode를 낼름 받아쓰죠..($urlencode가 전역변수입니다)

line : 43

    <input type="hidden" name="url" value="<?=$outlogin_url?>">  <== 보이시죠? $outlogin_url을 폼의 히든 변수 url로 만든부분이요..

3 ================================================================================
그누4 위쪽의 로그인 버튼을 눌러 로그인 페이지를 열어서 로그인하는 경우

이경우도 common.php를 인클루드하므로

line :20

if ($url)
    $urlencode = urlencode($url);
else
    $urlencode = urlencode($_SERVER[REQUEST_URI]);


이부분이 필요없어보이지만...우쨌든..이부분에서도 합니다..
전역변수 $urlencode에 요청한페이지를 저장합니다..
그리고 나머지는 2와 비슷합니다.

$member_skin_path/login.skin.php

line : 24

    $outlogin_url = $urlencode; <=== 그리고 이부분에서$urlencode를 낼름 받아쓰죠..($urlencode가 전역변수입니다)

line : 31

    <input type="hidden" name="url" value="<?=$outlogin_url?>">  <== 보이시죠? $outlogin_url을 폼의 히든 변수 url로 만든부분이요..

4 ================================================================================
  이렇게 폼의 url 변수 넣어서 login_check.php에 전달했습니다.
================================================================================

이런식으로 그누4 소스를 분석하다보면
어떻게 요청한 페이지의 url이 login_check.php에 전달되는지 보이실겁니다....
제가 분석한 부분이 쪼금 틀릴수는 있습니다..
그러나 대체로 이렇게 한다는 흐름은 맞을 겁니다~~~
소스를 열심히 보시면 답이 다 있응게로.......

화이팅입니다~~~!!!!
즐건하루~~~
답이 될지 모르겠지만 outlogin.skin.1.php 에서



if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

if ($g4['https_url']) {
    $outlogin_url = $_GET['url'];
    if ($outlogin_url) {
        if (preg_match("/^\.\.\//", $outlogin_url)) {
            $outlogin_url = urlencode($g4[url]."/".preg_replace("/^\.\.\//", "", $outlogin_url));
        }
        else {
            $purl = parse_url($g4[url]);
            if ($purl[path]) {
                $path = urlencode($purl[path]);
                $urlencode = preg_replace("/".$path."/", "", $urlencode);
            }
            $outlogin_url = $g4[url].$urlencode;
        }
    }
    else {
        $outlogin_url = $g4[url].$urlencode;  ◀◀◀  $g4[url];뒤에 .$urlencode; 추가하니까 되네요.
    }
}
else {
    $outlogin_url = $urlencode;
}
?>



문제는 없을까요???
오류가 나는지 좀더 해볼께요.
감사합니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT