include 방식와 iframe 방식과 관련해서 질문드립니다.

include 방식와 iframe 방식과 관련해서 질문드립니다.

QA

include 방식와 iframe 방식과 관련해서 질문드립니다.

본문

안녕하세요.

 

그누보드4때까지 작업하다 다른일을 하게되면서 그누보드를 안하게되었는데

 

이번에 그누보드5로 다시 작업하게 되면서 궁금한점이 생겨서 전문가분들에게 질문드리려고 합니다.

 

 

1. 기본적으로 이전에는 iframe에 board.php를 각 서브페이지의 컨텐츠 부분에 넣어주었는데

5들어와서 팁게시판이나 Q&A게시판을 열심히 뒤적거려보니 iframe은 대부분 권장하시지 않더군요

include(list.php)나 include(board.php) 를 head, tail을 붙여서 사용하라고 하시던데

 

주소부분에서 게시판 테이블 이름 매개변수를 넘겨주고 include할때

include(head.php) -> html 시작부터 head 태그와 상단메뉴처리

<div style='width:1200px;'>

include(board.php); -> 게시판

</div>

include(tail.php) -> 하단메뉴 처리와 html 끝

이런 방식으로 처리하는게 맞는건가요?

 

2. 컨텐츠 안에 include(board.php) 했을때 컨텐츠 부분 div 안에 meta태그와 link, script 태그들이

다 들어가던데 이게 일반적으로 권장되는 방식이 맞는지 확인하고 싶습니다.

 

3. iframe 사용했을땐 게시판 부분이 별도로 작동해서

head와 tail 부분이 페이지 이동과 새로고침 없이 글을 쓰거나 삭제할 수 있었습니다.

include 사용할때는 무조건 다른 페이지 이동으로 처리될 수 밖에 없는 것인지 알고싶습니다.

아니면 include를 사용했을때 게시판 컨텐츠 부분에서만 동작이 이루어질수 있게 하는

간단한 방법이 있을까요?

 

4. iframe을 사용하더라도 jquery를 통해서 고질적인 문제인 높이만 잘 지정해주면

기존에 그누보드4처럼 사용해도 문제는 없을까요?

 

 

최대한 팁과 Q&A나 구글에서 뒤져보며 찾아봤지만 명확하게 답을 얻은게 없어서 질문드려봅니다.

 

감사합니다.

이 질문에 댓글 쓰기 :

답변 4

include 와 iframe 의 차이를 알고계셔야 합니다

iframe 는 하나의 문서 안에서 다른 문서를 호출 하는 것입니다 .

A사이트 의 1.php 파일에서 iframe 를 써서 naver.com 을 호출하면

A사이트에서 실행되지만 iframe 에서는 naver.com 을 호출해주게 됩니다

 

즉 아예 별도의 문서 입니다

동일 사이트 내의 다른 문서를 호출해도 마찬가지입니다 .

 

따라서 세션 , 변수 등이 공유가 되지 않습니다 .(동일 사이트내의 문서면 세션은 공유가됩니다)

 

include 는 현재 파일에 다른 파일들을 가지고와서 사용 됩니다 

즉 세션,변수등이 공유가 되기 때문에 별도 선언이 필요없으며 다른 페이지에서 선언한 파일,변수,상수 등을 그대로 사용할수 있습니다.

 

여기까지 이해하셨으면 질문 주신것에 대하여 답변 드리겠습니다

 

=================================

 

1. 

include(head.php) -> html 시작부터 head 태그와 상단메뉴처리

<div style='width:1200px;'>

include(board.php); -> 게시판

</div>

include(tail.php) -> 하단메뉴 처리와 html 끝

 

이런식으로 사용하시는 게 맞습니다

 

2. 컨텐츠 안에 include 를 하시면 include 가 된 파일에서 사용되는 모든 파일,css등을 호출해서 그대로 사용합니다.

 

따라서 공통 스크립트,css 부분은 head.php 하단에서만 호출되는 것들은 tail.php

컨텐츠 부분은 컨텐츠 내용만 호출하도록 include 로 분리하여 사용하시면 됩니다

 

3. 글쓰기 삭제 ,수정등 의 동작시 페이지 주소가 변경되는것을 원치 않으시면

   ajax 를 통해서 처리하시면 됩니다 페이지 주소 변경없이 ajax 로 처리파일들 호출해서 처리하고

  페이지를 새로고침하든지 그런식으로 처리하시면 됩니다.

 

4. iframe 를 사용하지 않은 이유는 많이 있습니다. 높이 조절이나 가로 세로 사이즈 조절을

   pc,모바일 ,브라우져에 따라 예외처리를 해주시는게 문제가 될꺼고요

   반응형 처리 에서 문제가 될꺼고요

   따라다니는 변수 request 등을 iframe 호출시 계속 보내야하는등의 문제가 있을수있고요

 

   이런 문제를 다 해결하실수 있으면 iframe 를 사용하셔도 됩니다.

 

 

친절한 답변 감사드립니다.

그렇다면 include방식에 대해서 조금만 더 질문드려도 괜찮으실까요?

1. board.php에는 글목록을 보는 list와 글 내용을 보는 view에 대한 include만 있던데
게시판 include 후 write 버튼을 누르면 기본은 bbs/write.php로 이동되던데
만약 서브페이지가 1.php, 2.php 일때 글쓰기나 view에서 목록이동, 선택삭제 및 삭제 등의 버튼 기능 후
이동시 페이지 자체는 고정되어야 하니 list.skin.php에서 <a href='1.php?매개변수'> 주소로 변경시켜서
모드에 따라 board.php / write.php / view.php를 include 시키는 방법밖에 없는것인가요?
각 기능별로 연결되어있는 a태그 주소 변수의 값을 현재주소(1.php)로 받도록 해야하는 것인지...

2. 그게 아니라면 bbs/board.php 나 bbs/write.php로 이동하게 그대로 두고
head.php와 tail.php 부분을 1.php나 2.php 상태가 유지될 수있도록 조정해야하나요?


제가 너무 복잡하게 질문드리고 있는것이 아닌가 라는 생각은 드는데 커스터마이징시
어느쪽이 적절한지 잘 모르겠네요

1. 아이프레임 활용 하는 방식은 옛날 방식입니다~ 한때는 풀페이지 플레쉬로 구현해서 게시판만 불러오거나 부분 적으로 플래쉬로 구현하는 방법 때문에 아이프레임으로 구현하는데 현재는 딱히 특별한 이유가 있지 않고선 아이프레임을 쓰지 않습니다.

결론은 헤더와 푸터만 고정 시키고 컨텐츠부분인 변동성이 있습니다 그누보드는 원래 서로 나누어져서 방식 그대로 사용하면됩니다. 디자인 변경 할 경우에는 헤더 와 푸터 각자 구현하면됩니다. 스타일시트 내부에 보면 주석 처리가 되어 있어서 금방 찾을수있습니다.

2. 헤더 푸터를 따로 가져오기 때문에 메타 태그는 항상 상위에 있습니다. 인크루드해서 보드만 따로 가져올필요 없습니다.

3. 아이프레임보다 권장 하는건 에이젝스라고 제이쿼리 ajax를 이용해서 부분적으로 다이나믹한 기능을 활용할수있습니다.

4. 그누보드를 통해서 페이지 구성 할 수 있는 것들이 많기 때문에 굳이 아이프레임을 써서 구현 할 필요 없다고 생각됩니다. 예를 들어서 게시판 하나를 만든다고 하면 그대로 게시판만 하나 만들고 나머지 페이지는 없애면 됩니다. 보안 때문에 최신버전을 권장 합니다.

참고로 저도 처음 그누보드를 접 했을때 그누보드 틀에서 개발 하는 방법이 어려워서 아이프레임 방법으로 활용 했던 기억이 어렴풋이 생각납니다. 분석 할것도 많고 페이지 하나 고치는데 php 언어도 알아야하고 불필요하는 시간만 소모한다고 생각 했는데 생계를 유지 하기 위해서..  백엔드에 대해서 공부를 하게 됐습니다. 지금도 갈길이 멀지만.. 여기 냑 회원님들 덕분에 차근 차근 하나씩 배우게 됐습니다. 블로그에 개발 레시피 메모 하면서 하나씩 배워 보세요

(유투브에도 영상 몇가지 있습니다 참고해주세요)

친절한 답변 감사드립니다.

iframe때는 게시판을 연결시키면 테이블 매개변수만 넘겨주고 따로 건드릴 부분은 없어서 편했던 기억이 있었네요

다만 이제 include로 작업을 하려니 board.php에는 각 기능들이 bbs/board.php나
bbs/write.php 로 이동되어서 특정 서브페이지를 어떻게 유지시켜야 애매하더라구요 ㅎㅎ


물론 board.php 나 write.php를 불러올때도 head와 tail은 있지만 특정 서브페이지를 유지시키기거나
상위 카테고리의 메뉴에 현재 내가 어느 카테고리의 서브페이지에 접속중인지 보일수있도록
유지하는 커스터마이징이 어떻게 해야할지 고민되네요


기본적으로 게시판에 없는 페이지는 sub/noboard.php로 들어갈텐데 게시판이 들어가는 페이지는
바로 bbs/board.php로 이동시키고 매개변수를 통해서 head.php에서 서브페이지 상태를 구별해야할지...

그래서 결국엔 아이프레임보다 에이젝스를 하는게 좋습니다.. 저도 이부분은 고민을 많이 했는데~
에이젝스 기능이 파라메터도 같이 넣을수있고~ 그리고 아이프레임은 없어지는 추세에요

질문이 좀 복잡해서 제가 이해를 잘한건지는 모르겠습니다

 

지금 원하시는게 

 

1.php 파일에서 글쓰기 수정 삭제 등의 처리를 하고 싶다 

 

이거 이신거 같은데요 (페이지 주소 바뀌는거 없이)

 

그렇다면

 

1.php 파일을 만드셔서

안에내용을


<?php
$_REQUEST['bo_table'] = 'bo_table';
include_once('./_common.php');
include_once(G5_THEME_PATH.'/head.php');
 
include_once(G5_BBS_PATH.'/board.php');  // 리스트
//include_once(G5_BBS_PATH.'/write.php');  // 글쓰기
 
include_once(G5_THEME_PATH.'/tail.php');
?>

이런식으로 하시면 게시판 리스트를 호출하시든지 글쓰기를 호출하는 형태로 처리하셔야 할거같습니다

넵넵 기본적으로 제가 생각한 부분이랑 동일합니다.

다만 1.php로 include 해와도

각 게시판에는 기본적으로 버튼 링크부분이 localhost/bbs/board.php로 이동시키거나

localhost/bbs/write.php 이동시키도록 되어있더라구요 ㅎㅎ

그럼 localhost/sub/1.php나 localhost/sub/2.php로 주소가 유지되는 것이 아니니

각각의 기능별 a태그의 주소를 1.php나 2.php로 변경할 수밖에 없겠군요

이 부분은 상당히 까다롭겠네요

답변해주셔서 감사드립니다!

페이지 이동이 고민이시라면 세기말에 사용하던 고전적인 방법입니다.

아래처럼 타켓팅하면 submit을 iframe에서 진행하게되니 새로고침이 안되겠지요...

iframe속에서 호출된 페이지의 처리 맨끝에 top으로 location 걸어주면 부모창위치도 바뀔거구요..

 


<form target='chk' action='board.update.php'></form>
<iframe name='chk' src='width:0px;height:0px'></iframe>
 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,641 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT