- 로그인이 필요합니다 이후 로그인 페이지로 어떻게 이동하게 만들 수 있나요2025년 01월 29일
- TheStorybook
- 작성자
- 2025.01.29.:01
Q.
게시판 글에 추천에 클릭하면
비회원 추천을 허용하지 않은 경우
로그인이 필요합니다라는 메시지창이 뜨는데
그 후로 바로 로그인 화면으로 이동시키고 싶은데 어떻게 할 수 있을까요
1. 현재 사용한 코드입니다. 1) php @if($document->getMyVote()) <a href="javascript:;" onclick="do_doc_VoteSubmit('document','procDocumentVoteUpCancel','{$document->document_srl}'); return false;">좋아요취소 <span class="cnt">{$document->get('voted_count') ? $document->get('voted_count') : ''}</span></a> @else <a href="javascript:;" onclick="do_doc_VoteSubmit('document','procDocumentVoteUp','{$document->document_srl}'); return false;">좋아요 <span class="cnt">{$document->get('voted_count') ? $document->get('voted_count') : ''}</span></a> @endif 2) js function do_doc_VoteSubmit(module, action, target_srl) { saveScrollPosition(); // 스크롤 위치 저장 shouldRestoreScroll = true; // 스크롤 복원을 활성화 var params = { 'target_srl': target_srl, 'cur_mid': current_mid }; exec_json(module + '.' + action, params, function () { location.reload(); }); } 2. 조언해주신대로 js를 이렇게 수정해봤습니다. function do_doc_VoteSubmit(module, action, target_srl) { saveScrollPosition(); // 스크롤 위치 저장 shouldRestoreScroll = true; // 스크롤 복원을 활성화 const params = { target_srl: target_srl, cur_mid: current_mid }; // Ajax 요청 exec_json(module + '.' + action, params, function (response) { if (response.status === 'error') { // 로그인이 필요한 경우 처리 alert(response.message); if (response.redirect_url) { window.location.href = response.redirect_url; // 로그인 페이지로 이동 } } else if (response.status === 'success') { // 성공 처리 alert(response.message); location.reload(); // 페이지 리로드 } }); } 이렇게 해도 response 답이 없고 그대로 '로그인이 필요합니다' 라는 메세지만 뜨고 말아버리네요. 혹시 어디를 찾아봐야할까요. 아마 위 코드는 document.controller.php에서 function procDocumentVoteUp() 이 함수를 먼저 타서 그런거 같은데요.
if (response.status === 'error') { alert(response.message); // window.location.href = '/login'; //이동할 주소 } 테스트 해본건 아닌데 이렇게 해보시면 될듯합니다. if (response.redirect_url) { window.location.href = response.redirect_url; // 로그인 페이지로 이동 } 이런부분은 필요없을듯 합니다.
exec_json 은 아니지만 예전에 작업한 ajax 로 procDocumentVote 를 호출한 부분을 수정하여 테스트한 결과 if (response.error) { window.location.href = '/login'; return; } 이 부분이 작동됩니다.
감사합니다. 코드를 좀 깔끔하게 적어야 하는데 대충 가져와서 하다보니 실수했네요. function do_doc_VoteSubmit(module, action, target_srl) { saveScrollPosition(); // 스크롤 위치 저장 shouldRestoreScroll = true; // 스크롤 복원을 활성화 const params = { target_srl: target_srl, cur_mid: current_mid }; // Ajax 요청 exec_json( module + '.' + action, params, function () { location.reload(); // 페이지 리로드 }, function (response) { // console.log(response) window.location.href = '/login'; } ); } 네번째 인자에 이렇게 적어줬는데 '로그인이 필요합니다' alert창은 항상 뜨는데 안뜨게 하는 방법은 없을까요? 로그인이 필요합니다 라는 경고창이 뜬 후에 이동이 됩니다.
const mid = window.location.pathname; window.location.href = mid + '/login'; return false; // 기본 alert 방지 잘됩니다~~~~
로그인 여부에 따라 스킨 소스에서 미리 거르는 방법도 있을 것 같습니다. @auth @if($document->getMyVote()) 좋아요취소 @else 좋아요 @endif @endauth @guest <a href="로그인화면">좋아요</a> @endguest
'XE(Rhymix) > 변수 응용' 카테고리의 다른 글
게시글 본문에서 스크랩된 횟수 및 스크랩한 회원 목록 표시 (0) 2025.01.29 게시판 본문 요약을 불러올때 링크 주소는 제거하기 (0) 2025.01.29 쿼리문은 어려워#1 (0) 2025.01.29 글 / 댓글 의 최소 글자수 제한 거는 방법 (0) 2025.01.29 게시판 스크랩 버튼 만들기 (0) 2025.01.27 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)