게시판 글쓰기를 눌렀는데 로그인 페이지로 이동 해서 로그인후 자동으로 방금 글쓰기를 할려고 하던 페이지로 이동하도록 처리 하고 싶다면
리턴URL 값을 urlencode로 넘겼다가 다시 받는 방식을 이용하면 됩니다.
* 글쓰기 페이지
<?
//현재 페이지 URL을 만듭니다.
//아래 결과 : /board/write.php?page=
$rurl = urlencode($_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
if(로그인확인) {
//로그인이 안된경우 로그인 페이지 이동
//아래 결과 :
<script>location.href='/member/login.php?rurl=%2Fboard%2Fwrite.php%3Fpage%3D';</script>
echo
"<script>location.href='/member/login.php?rurl=$url';</script>";
}
?>
* 로그인페이지
<form>
<input type="text" name="id">
<input type="text" name="pw">
<input type="hidden" name="rurl" value="<?=$rurl?>">
</form>
//$url : %2Fboard%2Fwrite.php%3Fpage%3D
* 로그인 처리 페이지
//로그인 처리 후 페이지 이동전
$rurl = urldecode($rurl);
if(isset($rurl)) {
echo "<script>location.href='$rurl';</script>";
}
복잡해 보일수도 있으나 간단하죠!
로그인 페이지로 이동할때 현재 페이지 URL을 변수에 담아서 보내었다가 로그인 처리페이지에서 넘겨 받은 로그인전 페이지 값이 있으면
해당 페이지로 이동.
여기시 urlencode를 사용하는 이유는 위 처럼 post방식에선 필요성이 없으나 간혹 링크 방식으로 보낼경우 뒤에 붙은 변수값이
마치 처리페이지 변수값으로 넘어 가는걸 방지하기 위함입니다.
예)
<?
$url = $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
?>
<a href="/login.php?rurl=<?=$rurl?>">로그인</a>
예처럼 처리할 경우 결과는?
<a
href="/login.php?rurl=/board/write.php?page=1&table=book">로그인</a>
이렇게 넘어갈 경우 table=book이라는 값은 로그인 처리후 넘겨 주지 못하게 됩니다.
따라서 urlencode, urldecode를 사용하는 것입니다.
도움이 되셨는지 모르겠네요 ^^