로그인 페이지(/bbs/login.php)에서 로그인을 하면 인덱스 화면으로 넘어가는데
이걸 로그인을 시도했던 페이지로 가게 하고 싶은데 어디서 수정을 해야 하나요?
답변 2개 / 댓글 5개
답변에 대한 댓글 4개
login.php파일에서 24번줄에
[code]
if($HTTP_REFERER){
$login_url = $login_url."?pre=".$HTTP_REFERER;
}else {
$login_url = login_url($url);
}
[/code]
login_check.php파일에서 85번째 줄에
[code]
$urls = explode('?pre=', $url);
if($urls[1]){
$link = urldecode($urls[1]);
} else {
$link = urldecode($url);
}
[/code]
로 해서 적용해보세요.
어디에 삽입해야 되는지 알려주실수 있나요? 그냥 삽입해 보았더니 적용이 안되네요...
[code]
// 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";
[/code]
login_check.php 아랫부분에
[code]
$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 로그인 후 원래 페이지 가기 추가
}
[/code]
알려주신대로 이렇게 수정하였더니 되네요...
감사합니다^^
일반적으로 로그인이 안된 상태에서 로그인이 필요한 페이지에 접근할때 로그인 페이지로 이동하게 됩니다.
이때 이전 페이지 주소가 url 이란 변수로 쿼리스트링에 담기게 됩니다.
붉은색 글씨가 바로 이전페이지 주소에 해당하는 부분이고 로그인하게 되면 해당 페이지로 다시 이동됩니다
특별히 소스를 고치지 않으셨다면 바로 이동하게 될텐데 제대로 안되고 있다고 하면
로그인 페이지에서 $_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'] 변수를 이용해 보세요.
답변에 대한 댓글 1개
그런데 최강JAVA님이 알려주신대로 했는데 여전히 index 로 넘어가네요..
이런식으로 적용 했습니다.
[code]
$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);
[/code]
답변을 작성하려면 로그인이 필요합니다.
그런데 알려주신 링크는 초보가 이해하기엔 어렵네요 ㅠㅠ