1. 문제인식
게시판 글보기의 링크를 {getUrl()}로 처음엔 했었다.
그런데 글을 보았다가 다시 목록 페이지로 돌아가기 위해 목록버튼을 클릭할 때마다,
스크롤을 내렸을 때 화면이 아닌 목록 첫 맨 위의 화면부터 뜨는 것이었다.
그래서 버튼 링크를 history.back 로 바꾸었다.
그런데 문제가 있었다. 만약 그 페이지가 새 창에서 떴다면?
돌아갈 히스토리 페이지가 없었다.
답은 이거였다.
document.referrer
1) 만약 관리자 페이지에서였다면
2) 새창이었다면
3) 최종. 그럼 리퍼러가 bbs일 경우에만 뒤로가기로 동작하고 그게 아니라면 목록 페이지로 돌아가게 만들어야 한다.
<!--@if($_SERVER['HTTP_REFERER']==getenv('HTTP_REFERER'))--> <a href="javascript:history.back();" class="btn list">목록 보기</a> <!--@else--> <a href="{getUrl('document_srl','')}" class="btn list">목록 보기</a> <!--@end-->
참조
https://xe1.xpressengine.com/qna/22904454
https://xetown.com/questions/1407780
1. javascript 뒤로가기 히스토리가 없는 것을 어떻게 확인할 수 있을까?
https://programmingsummaries.tistory.com/318
2. [javascript] 사용자가 브라우저 기록으로 돌아갈 수 있는지 확인하는 방법
3. PHP : REFERER 이전페이지를 이용한 보안
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=psj9102&logNo=220925199042
#2022년 1월 30일 업데이트
https://www.php.net/manual/en/function.parse-url.php
<!--@if(explode("/",parse_url($_SERVER['HTTP_REFERER'],PHP_URL_PATH))[1]==$mid)--> <a href="javascript:history.back();" class="btn list">목록 보기</a> <!--@else--> <a href="{getUrl('document_srl','')}" class="btn list">목록 보기</a> <!--@end-->
parse_url($_SERVER['HTTP_REFERER'], PHP_URL_PATH 이용했습니다.
PHP의 parse_url 함수에는 path까지 출력해주는 옵션이 있었군요!!
Comment 5
댓글작성칸으로이렇게 하니깐 문제가 있네요.
글 수정시에도 저게 같이 되서.. 이전 페이지에서 mid 까지 같은지 체크하는 방법을 다시 연구해야겠습니다.
2번을 explode 해서...
위 값이랑 $mid 값이랑 같으면 뒤로가기, 다르면 $mid로 링크 걸어주기로 함.
현재 수정된 방법은 위와 같습니다.
이건 뭔지 나중에 다시 확인하기..