로그인 후 페이지 이동 질문드립니다.

로그인 후 페이지 이동 질문드립니다.

QA

로그인 후 페이지 이동 질문드립니다.

본문

 

로그인 페이지(/bbs/login.php)에서 로그인을 하면 인덱스 화면으로 넘어가는데

이걸 로그인을 시도했던 페이지로 가게 하고 싶은데 어디서 수정을 해야 하나요?

 

이 질문에 댓글 쓰기 :

답변 2

그러면
login.php파일에서 24번줄에


if($HTTP_REFERER){
	$login_url = $login_url."?pre=".$HTTP_REFERER;
}else {
        $login_url = login_url($url);
}


login_check.php파일에서 85번째 줄에

$urls = explode('?pre=', $url);
 
if($urls[1]){
$link = urldecode($urls[1]);
} else {
	$link = urldecode($url);
}

로 해서 적용해보세요.

login.php 중간 아랫부분에


// 2015.03.18 로그인 후 원래 페이지로 가기 추가
if($HTTP_REFERER){
	$login_url = $login_url."?pre=".$HTTP_REFERER;
}

//$login_url        = login_url($url);  // 2015.03.18 로그인 후 원래 페이지로 가기 주석 처리
$login_action_url = G5_HTTPS_BBS_URL."/login_check.php";



login_check.php 아랫부분에

$urls = explode('?pre=', $url);
if($urls[1]){
$link = urldecode($urls[1]);

/*
if ($url) {
    $link = urldecode($url);
*/
    // 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
    if (preg_match("/\?/", $link))
        $split= "&";
    else
        $split= "?";

    // $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김
    foreach($_POST as $key=>$value) {
        if ($key != 'mb_id' && $key != 'mb_password' && $key != 'x' && $key != 'y' && $key != 'url') {
            $link .= "$split$key=$value";
            $split = "&";
        }
    }
} else  {
    //$link = G5_URL; // 2015.03.18 로그인 후 원래 페이지 가기 주석 처리
	$link = urldecode($url); // 2015.03.18 로그인 후 원래 페이지 가기 추가
}


알려주신대로 이렇게 수정하였더니 되네요...
감사합니다^^

일반적으로 로그인이 안된 상태에서 로그인이 필요한 페이지에 접근할때 로그인 페이지로 이동하게 됩니다.

이때 이전 페이지 주소가 url 이란 변수로 쿼리스트링에 담기게 됩니다.

예를들면 http://demo.sir.co.kr/gnuboard5/bbs/login.php?url=http%3A%2F%2Fdemo.sir.co.kr%2Fgnuboard5%2Fbbs%2Fqalist.php

붉은색 글씨가 바로 이전페이지 주소에 해당하는 부분이고 로그인하게 되면 해당 페이지로 다시 이동됩니다

특별히 소스를 고치지 않으셨다면 바로 이동하게 될텐데 제대로 안되고 있다고 하면

로그인 페이지에서 $_SERVER["HTTP_REFERER"] 를 이용하여 이전페이지 주소로 다시 이동할 수 있습니다.

 

그누보드 5 기준 login_check.php 67번째 라인부터 보시면 아래와 같은 소스가 있습니다.

 

if ($url) {
    // 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
    if (preg_match("/\?/", $link))
        $split= "&";
    else
        $split= "?";

    // $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김
    foreach($_POST as $key=>$value) {
        if ($key != 'mb_id' && $key != 'mb_password' && $key != 'x' && $key != 'y' && $key != 'url') {
            $link .= "$split$key=$value";
            $split = "&";
        }
    }
} else  {
    $link = G5_URL;
}​

 

위와 같이 소스가 되어 있다면 로그인 후 이전 주소로 잘 이동될껍니다.

단 로그인이 필요하지 않은 페이지를 돌아다니다가 외부로그인 창으로 로그인하면 인덱스로 가게 됩니다. 

 

소스가 변형된 경우라면  거나 무조건 이동시키고 싶다면

if ($url) { .... 바로 윗줄에

$url = $_SERVER["HTTP_REFERER"];

위 구문을 추가해주시면 잘 될것으로 예상됩니다. 실제 테스트는 직접 해보시길.,

 

한가지 더 참고하실 내용입니다.

 

이전 페이지에 파라메터를 달고 다니는 경우가 있을수 있습니다.

 

예를들면 a.php?id=xxx&name=yyyu 와 같이 파라메터까지 같이 가지고 가야 하는 경우는

$_SERVER['QUERY_STRING']  변수를 이용해 보세요.

 

 

 

 

 

답변 감사드립니다^^
그런데 최강JAVA님이 알려주신대로 했는데 여전히 index 로 넘어가네요..
이런식으로 적용 했습니다.


$url = $_SERVER["HTTP_REFERER"];
if ($url) {
    $link = urldecode($url);
    // 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
    if (preg_match("/\?/", $link))
        $split= "&";
    else
        $split= "?";

    // $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김
    foreach($_POST as $key=>$value) {
        if ($key != 'mb_id' && $key != 'mb_password' && $key != 'x' && $key != 'y' && $key != 'url') {
            $link .= "$split$key=$value";
            $split = "&";
        }
    }
} else  {
    $link = G5_URL;
}

goto_url($link);

답변을 작성하시기 전에 로그인 해주세요.
전체 24
QA 내용 검색

회원로그인

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