네이버 모바일 로그인 페이지처럼  따로 로그인을

로그인 전용 레이아웃을 사용해서 위젯 페이지로 만들어서 사용할 경우에

로그인 페이지로 접속해서 로그인한 이후에..

보통 관리자 회원 로그인 설정에서 설정해둔 메인 페이지로 이동이 아닌...

로그인하기 전에 보고 있던 페이지로 다시 이동하기를 하려고 하면 어떻게 해야하나요?;;;

  • Lv36
    modules/member/skins/default/login_form.html 템플릿을 보세요.
    success_return_url이라는 항목에 {$referer_url}이 들어 있습니다.
    로그인 후에는 바로 전 페이지로 돌려보내 달라는 뜻이죠.

    만약 다른 곳에서 $referer_url 변수가 필요하다면
    modules/member/member.view.php 420~430줄 전후를 참고하여 만들어 쓰시면 됩니다.
  • Lv36 Lv15
    산너머 산이군요. 감사합니다. ㅎㅎ;
  • Lv36 Lv15
    <input type="hidden" name="success_return_url" value="{htmlspecialchars(getRequestUriByServerEnviroment(), ENT_COMPAT | ENT_HTML401, 'UTF-8', FALSE)}" />
    <input type="hidden" name="success_return_url" value="{$referer_url}" />

    어떤 스킨에서는 이렇게도 있던데 차이는 뭔지 혹시 알수 있을까요^^;
  • Lv15 Lv36
    위의 것은 로그인 창이 위치한 현재 페이지로 도로 돌아옵니다.
    아래의 것은 리퍼러(이전 페이지)로 돌아갑니다.
    로그인 위젯에서는 위의 것을 쓰는 게 옳고, 별도의 로그인 페이지라면 아래의 것을 써야죠.
  • Lv16
    로그인 페이지로 넘어 올 때 리퍼러를 저장하면 되지요
  • Lv16 Lv15
    네 그 방법을 몰라서 ㅋ 안되는 줄 알았는데 되는 방법이 있는거 같긴 하네요. ㅎ
    감사합니다. ㅎ;; 찾아볼게요 ㅠㅠ
  • Lv16 Lv15
    리퍼러를 저장한다는 말씀을 어떻게 하면 되는지 잘 몰라서 그러는데
    기존에는

    <input type="hidden" name="success_return_url" value="{htmlspecialchars(getRequestUriByServerEnviroment(), ENT_COMPAT | ENT_HTML401, 'UTF-8', FALSE)}" />

    이렇게 사용해서 로그인 버튼을 처리했습니다.

    그런 식을.. 위에 기진곰님께서..

    <input type="hidden" name="success_return_url" value="{$referer_url}" />

    이렇게도 가능하다고 하셔서요.. 저게 로그인 후에 바로 전 페이지로 돌려보내라는 말이라고 하셨는데
    원래는 코드 자체에는 저렇게만 하면 리퍼러를 저장해서 넘기는 게 되는 것이고...

    저 {$referer_url} 이 코드를 레이아웃에서 사용하려면..
    ....
    뭐 잘 몰라서 php로 그냥 날코딩하면..

    <input type="hidden" name="success_return_url" value="<? echo($_SERVER['HTTP_REFERER']); ?>" />

    이렇게 하니깐 되네요.. 혹시 더 좋은 방법 있나요?;
  • Lv15 Lv36

    value="{htmlspecialchars($_SERVER['HTTP_REFERER'], ENT_COMPAT, 'UTF-8')}"

  • Lv36 Lv15

    감사합니다;;;
    한가지 더 여쭤봐도 될까요^^;


    php 에서 보면 encode/decode를 해줘라고 되어있던데요..

    <? echo( urlencode( $_SERVER['HTTP_REFERER'] ) ); ?>

    이런 식으로 하면... 서브밋되면 자동 decode가 되서.. 다시 끝에서 urldecode 해서..

    location.href = '<?php echo urldecode($_POST['success_return_url']);?>';

    이렇게 사용하라고 되어있던데요..

    제가 이해를 잘 못해서 그런데.. XE에서는 그냥 <? echo($_SERVER['HTTP_REFERER']); ?>
    이렇게만 적어도 잘 동작하던데.. 위의 말은 무슨 이야기인지 설명 부탁드려도 될까요?;;

  • Lv15 Lv36
    urlencode는 하지 마세요. 이미 제대로 되어있는 인터넷 주소에 urlencode하면 깨집니다.
    XSS 공격을 막기 위해 htmlspecialchars만 해주면 됩니다.
  • Lv36 Lv15
    바로 위젯 페이지에서.. 로그인 레이아웃에서는 알려주신 코드는 인지를 못하는 거 같네요.. 아숩;;
  • Lv36 Lv15
    지금 htmlspecialcharts 안에 $_SERVER['HTTP_REFERER'] 를 써준 부분을 인지를 못하고 있어서요;;
    그냥 이렇게 쓰는 거랑 다른가요?;
    <input type="hidden" name="success_return_url" value="<? echo($_SERVER['HTTP_REFERER']); ?>" />
  • Lv15 Lv36
    getRequestUriByServerEnviroment()은 현재 페이지의 URL이고, 리퍼러는 바로 전 페이지의 URL이므로
    로그인 후 현재 페이지로 돌아와야 하는지, 이전 페이지로 돌아가야 하는지에 따라 용도가 다릅니다.
  • Lv15 Lv36
    함수 이름은 제대로 쓰셨나요? htmlspecialcharts가 아니라 htmlspecialchars인데...

    XE 문법 { } 으로 안되면 그냥 <?php echo htmlspecialchars($_SERVER['HTTP_REFERER']); ?> 도 해보세요.
  • Lv36 Lv15
    {htmlspecialchars( $_SERVER['HTTP_REFERER'] );}
    위에껀 안되구요.
    <? echo htmlspecialchars( $_SERVER['HTTP_REFERER'] ); ?>
    이건 되네요 ㅎ;;
  • Lv36 Lv15
    커피라도 한잔 대접해야겠네요 ㅠㅠ 감사합니다.
  • Lv15 Lv36
    커피 얻어먹으러 경산 가야겠네요! ㅋㅋ